使用 pyspark 向 hive 表添加注释

Posted

技术标签:

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

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

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

例子:

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

【问题讨论】:

【参考方案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,即使该答案对提问者没有用处。如果它不正确,那就是反对票。

以上是关于使用 pyspark 向 hive 表添加注释的主要内容,如果未能解决你的问题,请参考以下文章

将 sql server jar 添加到 pyspark 的类路径后无法查询 hive

使用 pyspark 更改配置单元表后的架构错误

python pyspark-sql-hive-context.py

如何使用 PySpark 检查 Hive 表是不是存在

使用 pyspark 来自 JSON 数据的 Hive 表

带有 hive 的 pyspark - 无法正确创建分区并从数据框中保存表