我正在尝试从群集中的所有HDFS文件获取第一行" / user"目录。
目前我们有一个Hive表,其中包含有关这些文件的信息,例如所有者,完整路径(位置),所有者的公司ID,文件创建日期,文件读/写权限等。我想添加此Hive表的新列,其中包含文件的完整第一行。
这就是为什么我正在寻找一种方法来提取目录中的所有HDFS文件的第一行(在我的例子中,是" / user"目录)。我可以使用Spark实现这个吗?
答案 0 :(得分:2)
尝试这样的事情:
hadoop fs -cat /user/* | head
并且玩耍。
cat就像/是连接一样。
head读取作为输入提供给它的任何文本的前几行,并将它们写入标准输出(默认情况下是显示屏)
答案 1 :(得分:0)
您可以对所有文件进行递归搜索,然后使用cat
并按@gsamaras的其他答案中指定的第一行
hdfs dfs -ls -R /user/ | grep -v "^d" | awk '{print $8}' | while read file; do
echo "${file}"
hdfs dfs -cat ${file} | head -1
echo
done
grep
与v
标志一起使用以反转以d
开头的所有行,即目录
awk
用于打印每行的第8个字段,即文件名。