【问题标题】:Add comments to hive tables using pyspark使用 pyspark 向 hive 表添加注释
【发布时间】:2019-11-18 15:13:39
【问题描述】:

我正在通过 PySpark 创建配置单元表。

有没有办法在写入 hive 之前将 cmets 添加到每一列?

例子:

df = spark.table('sometable') # 添加 cmets df.write.saveAsTable('mytablewithcmets')

【问题讨论】:

    标签: apache-spark hive pyspark


    【解决方案1】:

    列类的alias 方法采用metadata 选项,其中可能包含注释。

    df_with_column_comment = df.select( df.col.alias( 'col',
        metadata = { 'comment': 'Column description' }
    ) )
    

    据我所知,列是不可变的,因此在创建后无法添加评论。

    【讨论】:

      【解决方案2】:

      登录 pyspark shell

      bash$ pyspark
      >>> spark.sql("create table cmnt(id string COMMENT 'new')")
      

      Then login to hive cli:

      hive> desc formatted cmnt;
      OK
      # col_name              data_type               comment
      
      id                      string                  new
      

      然后就可以看到hive表中的cmets了!

      【讨论】:

      • 谢谢@Shu,是否可以在从pyspark保存表格的同时添加cmets?例如:df.write.saveAsTable('mytable') 这样mytable的每一列都有cmets。
      • @gr.kr,我认为不可能,我们只能在创建 hive 表时将 cmets 添加到列中!
      • 感谢舒的回复
      【解决方案3】:

      CREATE TABLE table_name( column1 STRING, column2 STRING COMMENT "some comment", column3 LONG) USING csv OPTIONS (header true, path '/data/table.csv')

      【讨论】:

      • 我正在寻找使用 pyspark 的东西。
      • 而不是使用 hiveql
      • @gr.kr 你可以使用 spark SQL 用 cmets 创建表。
      • 感谢@dassum,我希望使用 df.write.saveAsTable('') 在每列上使用 cmets 动态创建表。
      • FWIW,它似乎提供了an answer,即使该答案对提问者没有用处。如果它不正确,那就是反对票。
      猜你喜欢
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多