我正在尝试将数据从配置单元表复制到我的本地目录。 我使用的代码是:
nohup hive -e "set hive.cli.print.header=true; set hive.resultset.use.unique.column.names=false; select * from sample_table;" | sed 's/[\t]/|/g' > /home/sample.txt &
问题是该文件大约有 400 GB,并且该过程需要很长时间才能完成。
有没有更好的方法,比如在生成文件时压缩文件。
我需要将数据作为 .txt 文件,但我无法快速解决此问题。
任何聪明的想法都会非常有帮助。
最佳答案
您是否尝试过使用 hadoop
命令的 -getmerge
选项来完成它?这通常是我用来合并 Hive 文本表并导出到本地共享驱动器的方法。
hadoop fs -getmerge ${SOURCE_DIR}/table_name ${DEST_DIR}/table_name.txt
我认为 sed
命令也会显着降低速度。如果您在提取数据之前在 Hive 中进行字符替换,这将比在您的边缘节点上运行的单线程 sed
命令更快。
关于hadoop - 将大型数据集从 Hive 复制到本地目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47189358/