hadoop - 从Beefline转储HDFS目录中的数据

标签 hadoop hive hdfs beeline

我正在编写bash脚本以将动态sql查询导出到HDFS目录中的hql文件中。我将通过oozie运行此bash。

  • sql_v =选择'从user_tab_columns中创建表table_name,其中...;'
  • 直线-u“$ sql_v”> local_path

  • 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
    
  • 如果使用oozie shell操作运行包含sql_v和beeline命令的bash脚本,则beeline必须存在于将运行shell操作的节点中;否则,您将面对beeline未发现错误。
    引用:beeline-command-not-found-error
  • 关于hadoop - 从Beefline转储HDFS目录中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58224383/

    相关文章:

    hadoop - Hive:如何决定哪个值进入哪个桶?

    hadoop - 是否可以配置clickhouse数据存储为hdfs

    hadoop - MRjob文档中的“The location specified by MRJOB_CONF”

    hadoop - avro映射的lib中的AvroKey和AvroValue类

    hive - 在配置单元中连接字符串列

    sorting - PARTITIONED BY、CLUSTERED BY 和 SORTED BY 与 BUCKETS 之间的 Hive 区别以及插入与 PARTITIONED 和 CLUSTER BY 的覆盖?

    hadoop - Hdfs 到 s3 Distcp - 访问 key

    hadoop - 不带 reducer 的Mapper作业中的文件数

    hadoop - 机架警告配置不起作用

    java - Mahout - 如何取消设置 Mahout_local 以在 Hadoop 文件系统中运行?