我正在编写bash脚本以将动态sql查询导出到HDFS目录中的hql文件中。我将通过oozie运行此bash。
sql_v变量将存储动态创建表命令,我想将其存储在hdfs目录的hql文件中。如果我运行以上2个步骤,它将运行良好,因为我将数据存储在本地路径中,而不是传递local_path,而是要将sql存储在hdfs目录中。工作。我可以使用其他命令代替beeline吗?
直线-u“$ sql_v” | hdfs dfs -appendToFile-
最佳答案
如果目标是将beeline的输出写入hdfs文件,则以下选项应该可以正常工作,因为这两个命令都将beeline的标准输出通过管道传递给hadoop命令作为输入,由(-)识别。
beeline -u beeline_connection_string .... -e "$sql_v" | hadoop fs -put - /user/userid/file.hql
beeline -u beeline_connection_string .... -e "$sql_v" | hadoop fs -appendToFile - /user/userid/file.hql
注意:
1.根据您的问题和评论,您不清楚为什么您不能使用@ cricket_007给出的建议,尤其是为什么要去找一条直线。
echo "$sql_v" > file.hql
hadoop fs -put file.hql /user/userid/file.hql
beeline -u beeline_connection_string .... -e "$sql_v" > file.hql
hadoop fs -appendToFile file.hql /user/userid/file.hql
beeline -u beeline_connection_string .... -e "$sql_v" > file.hql
hadoop fs -put file.hql /user/userid/file.hql
引用:beeline-command-not-found-error