python - 使用 spark 连接器从雪花自定义数据类型映射

标签 python pyspark pyspark-sql snowflake-cloud-data-platform

使用雪花 Spark 连接器从雪花复制表时,默认行为是将结构化数据映射到 Spark 字符串:https://docs.snowflake.net/manuals/user-guide/spark-connector-use.html#from-snowflake-to-spark-sql

例如,给定一个雪花表:

create table schema.table as 
select 
    array_construct('1','a') as array_col,
    object_construct('1','a') as obj_col

并将其复制到 pyspark 中

df = snowflake.sql_context.read.format("snowflake url")\
    .options(**snowflake_options)\
    .load()

数据框中的结果:

> df: pyspark.sql.dataframe.DataFrame
>   ARRAY_COL:string
>   OBJ_COL:string

目前是否有一种方法可以在连接器中覆盖此默认行为,以将雪花 OBJECT 映射到 spark StructType 和/或雪花 ARRAY 到spark MapType?

最佳答案

希望您一切安好,我想您可能正在寻找 columnmapping 参数。不过我不是这方面的专家,所以我只是想分享我发现的研究。

专门针对Spark表转Snowflake表 https://docs.snowflake.net/manuals/user-guide/spark-connector-overview.html#column-mapping

为了激发 MapType 的雪花 ARRAY: 对象是否作为数组存储在 Snowflake 表中? 这是你要找的吗? https://sparkbyexamples.com/spark/spark-sql-map-functions/

关于python - 使用 spark 连接器从雪花自定义数据类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369850/

相关文章:

python - Pyspark 过滤列表列中的项目

python - 使用 boto3 从 AWS Glue 获取表

dataframe - 如何计算每行的最大值,并返回最大值的列和具有相应列名的另一列?

python-3.x - 在 PySpark Python 中减去两个日期列

apache-spark - 名称错误 : name 'split' is not defined with Spark

python - python 中的 argv 不适用于 Windows 可执行文件 cmdline

python - 仅当组中的最新记录不同时才插入表中

hadoop - PartitionBy删除PySpark中的特殊字符

python - 如何比较pandas数据透视表中不同索引的值?

python - 让 IPython 导入我的意思