You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ADLS容器中各Delta表生成独立的Parquet转换脚本

问题解决:生成单表独立的Delta转Parquet脚本

现有代码的问题

  • 变量名大小写错误:tablename应为table_name(Python区分大小写)
  • SELECT语句格式错误:列名和FROM之间缺少空格,会导致SQL语法错误
  • 字符串未闭合:生成的语句末尾缺少闭合的单引号和括号,语法不完整
  • 未输出/执行生成的语句:仅赋值给变量但未处理,无法得到目标输出

修改后的代码

df = spark.sql("SHOW TABLES IN gold")
df_rows = df.collect()
table_names = [row["tableName"] for row in df_rows]

for table_name in table_names:
    # 获取当前表的列名
    df_cols = spark.sql(f"SHOW COLUMNS IN gold.{table_name}")
    column_names = [row["col_name"] for row in df_cols.collect()]
    
    # 生成格式正确的转换语句,使用f-string更易读
    select_statement = (
        f"spark.sql('SELECT {','.join(column_names)} FROM gold.{table_name}')"
        f".write.format('parquet').mode('overwrite').save('/mnt/gold/toParquet/{table_name}')"
    )
    
    # 打印生成的语句,若需直接执行可替换为exec(select_statement)
    print(select_statement)

关键修改点说明

  • 使用f-string替代字符串拼接,提升可读性并避免格式错误
  • 修正变量名table_name的大小写问题,匹配循环变量
  • 在列名和FROM之间添加空格,保证SQL语法合法
  • 补全语句末尾的闭合符号,确保生成的代码语法完整
  • 添加print(select_statement)输出每张表对应的独立转换语句,如需直接执行脚本可替换为exec(select_statement)

示例输出

spark.sql('SELECT column1,column2 FROM gold.table1').write.format('parquet').mode('overwrite').save('/mnt/gold/toParquet/table1')
spark.sql('SELECT column_a,column_b FROM gold.table2').write.format('parquet').mode('overwrite').save('/mnt/gold/toParquet/table2')

内容的提问来源于stack exchange,提问作者Rchee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:18:28