如何在写入parquet时处理money数据类型

uyhoqukh  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(379)

我一直在尝试从SQLServer获取数据,加载到dataframe,然后写入parquet(稍后我将其加载到bigquery或其他源代码)。我对money数据类型有一些问题,例如,当sql server中的数据:
100,000
但在写给Parquet地板后,它转换为:
100
(因为数据量很大,我无法下载到本地来确定,但可能 write.parquet 把钱换成整数,请纠正我)。
这是我剧本的一部分:

df = spark.read.format("jdbc") \
    .option("url", "jdbc:sqlserver://{myIP}:1433;instanceName={myInstance};database={myDB};") \
    .option("dbtable", table_source) \
    .option("user", user_source) \
    .option("password", password_source) \
    .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
    .load()

df.write.parquet("gs://output/sample.parquet")

我应该为每一列指定一个方案吗?还是有更好的方法?

plupiseo

plupiseo1#

我相信这是因为 , 字符被视为小数点。您能确认sql server中的数据类型是数字吗?
如果sql server中的类型是数字,则可以尝试手动删除 , 在Parquet地板上写字之前,先把字打成两个或两个字。如果不是数字,那么你将不得不做铸造无论如何。

相关问题