使用 ADF 将数据传输到 Databricks 表期间的数据类型转换为字符串

Data type during transferring data with ADF to Databricks tables converts into string

大图: Netezza 表(具有整数值,具有数据时间值)-----> Databricks table,列为字符串

详情:

我有如下想法,但行不通

dataSchema = StructType([
                         StructField("col1", IntegerType()),
                         StructField("col2", LongType()),
                         StructField("col3", FloatType()),
                         StructField("col4", DoubleType()),
                         StructField("col5", StringType()),
                         StructField("col6", DateType()),
                         StructField("col7", TimeType()),
                         StructField("col8", ArrayType()),
                         StructField("col9", MapType()),
                        ])
df.write \
  .option("schema",dataSchema)
  ......
  .save()

请帮助您体验如何强制这些 table 列符合所需的数据类型

您可以在 ADF 管道的接收器中使用 parquet 格式而不是 CSV。它将保留源中的数据类型,而不是像 CSV 中的所有列的字符串。此外,parquet 在以下几个方面对您有好处:

  1. 您还可以使用某种形式的压缩,例如 snappy,在 ADLS
  2. 中保存一些 space
  3. 使用 spark/databricks/Hive 集成很容易,正如您在问题中提到的那样。

一个小小的对比,让你明白。我试过 parquet 和 csv,你可以在这里看到区别。 ADF 管道接收器:

CSV 接收器(所有列均为字符串)

Parquet:(具有等效格式的列)