使用 ADF 将数据传输到 Databricks 表期间的数据类型转换为字符串
Data type during transferring data with ADF to Databricks tables converts into string
大图:
Netezza 表(具有整数值,具有数据时间值)-----> Databricks table,列为字符串
- 我正在将大型 table 从 Netezza 传输到 ADLS,然后从 ADLS 传输到 Databricks(再次使用 ADF = Azure 数据工厂)
- 直接将数据从 Netezza 加载到 Databricks 由于不同的体系结构决策而被搁置。
- 在 Netezza 中有 tables,其中包含整数、数据时间值,我想让它们像 Databricks 一样可用
详情:
- ADF 有一个带有参数的通用管道,这使得它能够读取所有 Netezza tables
- ADF 假设有一个日常管道,其中复制通用管道以覆盖所有 netezza tables
- 上述 ADF 架构会导致一个问题,即所有内容都以字符串形式摄取。我无法通过 ADF
中的地图选项卡进行更改
- ADF 正在 ADLS 中以 CSV 格式写入数据
- 沿着 ADF 管道线,我是 运行 一个将数据加载到数据块中的数据块笔记本 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
在以下几个方面对您有好处:
- 您还可以使用某种形式的压缩,例如 snappy,在 ADLS
中保存一些 space
- 使用 spark/databricks/Hive 集成很容易,正如您在问题中提到的那样。
一个小小的对比,让你明白。我试过 parquet 和 csv,你可以在这里看到区别。
ADF 管道接收器:
CSV 接收器(所有列均为字符串)
Parquet:(具有等效格式的列)
大图: Netezza 表(具有整数值,具有数据时间值)-----> Databricks table,列为字符串
- 我正在将大型 table 从 Netezza 传输到 ADLS,然后从 ADLS 传输到 Databricks(再次使用 ADF = Azure 数据工厂)
- 直接将数据从 Netezza 加载到 Databricks 由于不同的体系结构决策而被搁置。
- 在 Netezza 中有 tables,其中包含整数、数据时间值,我想让它们像 Databricks 一样可用
详情:
- ADF 有一个带有参数的通用管道,这使得它能够读取所有 Netezza tables
- ADF 假设有一个日常管道,其中复制通用管道以覆盖所有 netezza tables
- 上述 ADF 架构会导致一个问题,即所有内容都以字符串形式摄取。我无法通过 ADF 中的地图选项卡进行更改
- ADF 正在 ADLS 中以 CSV 格式写入数据
- 沿着 ADF 管道线,我是 运行 一个将数据加载到数据块中的数据块笔记本 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
在以下几个方面对您有好处:
- 您还可以使用某种形式的压缩,例如 snappy,在 ADLS 中保存一些 space
- 使用 spark/databricks/Hive 集成很容易,正如您在问题中提到的那样。
一个小小的对比,让你明白。我试过 parquet 和 csv,你可以在这里看到区别。
ADF 管道接收器:
CSV 接收器(所有列均为字符串)
Parquet:(具有等效格式的列)