Spark SQL - 自定义数据类型 UUID

Posted

技术标签:

【中文标题】Spark SQL - 自定义数据类型 UUID【英文标题】:Spark SQL - Custom Datatype UUID 【发布时间】:2018-04-03 08:26:02 【问题描述】:

我正在尝试使用 Spark SQL 中的自定义数据类型将数据集中的列从 varchar 转换为 UUID。但我看到转换没有发生。如果我在这里遗漏了什么,请告诉我。

val secdf = sc.parallelize( Array(("85d8b889-c793-4f23-93e9-ea18db640039","Revenue"), ("85d8b889-c793-4f23-93e9-ea18db640038","Income:123213"))).toDF("id", "report")
val metadataBuilder = new MetadataBuilder()
metadataBuilder.putString("database.column.type", "uuid")
metadataBuilder.putLong("jdbc.type", java.sql.Types.OTHER)
val metadata = metadataBuilder.build()
val secReportDF = secdf.withColumn("id", col("id").as("id", metadata))

【问题讨论】:

您是否正在尝试将您的数据框写入以 UUID 作为列数据类型的数据库?有时,连接器会为您隐式执行此操作。 是的@philantrovert 我正在尝试使用 postgres 方言写入具有列 UUID 的数据库,并且我得到了执行 你应该看看***.com/questions/47368906/…和groups.google.com/a/lists.datastax.com/forum/#!topic/… 对延迟回复表示歉意。我已经完成了这些问题。我得到了 Postgres 的类似例外 【参考方案1】:

由于我们无法在 Spark SQL 中转换为 UUID,因此我做了解决方法,我已在 Postgres JDBC 客户端中将属性添加为 stringtype=unspecified,这解决了我在通过 Spark JDBC 插入 UUID 时遇到的问题

【讨论】:

Here is the workaround 使用 Postgres stringtype JDBC 属性

以上是关于Spark SQL - 自定义数据类型 UUID的主要内容,如果未能解决你的问题,请参考以下文章

在 org.apache.spark.sql.types.DataTypes 中找不到 uuid

Spark SQL自定义外部数据源

Spark-SQL:如何将 TSV 或 CSV 文件读入数据框并应用自定义模式?

如何在 Spark 中创建 UDF 以支持自定义谓词

SparkSQL自定义无类型聚合函数

Spark操作dataFrame进行写入mysql,自定义sql的方式