首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在包含特殊字符串的HDFS文件中显示特定行

如何在包含特殊字符串的HDFS文件中显示特定行
EN

Stack Overflow用户
提问于 2019-01-03 14:34:36
回答 3查看 1.1K关注 0票数 1

我有这些台词

代码语言:javascript
复制
DIS_CD_RLT_PSE,D,,177959,10.425719262087393
DIS_CD_RLT_PSE,E,,811061,47.5159687929684
DIS_CD_RLT_PSE,I,,113424,6.6449394612410755
DIS_CD_RLT_PSE,M,,404023,23.66966758313058
DIS_CD_RLT_PSE,P,,28083,1.6452411737377726
DIS_CD_RLT_PSE,U,,142155,8.32814368310697
DIS_CD_RLT_PSE,Z,,30218,1.7703200437278073

就在这里

代码语言:javascript
复制
/hdfs/data/t11/t111/t1/t/z/InterfacePublique/

我需要一个hadoop命令,它只能显示行:

代码语言:javascript
复制
DIS_CD_RLT_PSE,I,,113424,6.6449394612410755

DIS_CD_RLT_PSEI字符串提供。

我试过这样做:

代码语言:javascript
复制
Hadoop fs -ls /hdfs/data/t11/t111/t1/t/z/InterfacePublique/ | grep DIS_CD_RLT_PSE | grep I

但它并没有给出所需的结果。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-03 15:32:40

与*nix类似,-ls选项列出给定路径中的文件和目录,它不读取hdfs文件内容。见HDFS文件系统外壳文档。您可能要查找的命令是-cat

$ hdfs dfs -cat /hdfs/data/t11/t111/t1/t/z/InterfacePublique/* | grep "DIS_CD_RLT_PSE.*I"

票数 2
EN

Stack Overflow用户

发布于 2019-01-03 20:30:55

如果文件的大小有限,但在有大数据时不缩放,则可以使用grep。

如果使用Hive,则可以在此数据上创建一个Hive表,然后编写Hive查询以检索所需的行。

例如,上面的文件有数据,其中每一行都有5个值,由,分隔。我们可以用col1col2col3col4col5 5栏来处理表mytable。数据将表现为:

代码语言:javascript
复制
----------------------------------------------------------------
col1           | col2 | col3 |    col4   | col5                |    
----------------------------------------------------------------
DIS_CD_RLT_PSE  | Z   | NULL |   30218   | 1.7703200437278073  |
----------------------------------------------------------------

在此之后,您可以编写如下查询:

代码语言:javascript
复制
Select * from mytable where col5 == '113424'

您可以编写一个MapReduce作业,也可以使用另一个框架/工具(比如Pig),这样可以让您感到舒服。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-01-03 16:30:14

如果您想对少量文件或不太大的文件执行此搜索,那么下面的方法应该有效:

代码语言:javascript
复制
hadoop fs -ls /technology/dps/real | awk '{print $8}' | while read f; do hdfs dfs -cat $f | grep -q DIS_CD_RLT_PSE && echo $f; done

但是,如果您正在对100个文件进行此搜索,那么我将使用map-reduce作业或流API来完成此操作。对于大量的文件来说,上面的方法会非常慢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54024371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档