我一直在尝试从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")
我应该为每一列指定一个方案吗?还是有更好的方法?
1条答案
按热度按时间plupiseo1#
我相信这是因为
,
字符被视为小数点。您能确认sql server中的数据类型是数字吗?如果sql server中的类型是数字,则可以尝试手动删除
,
在Parquet地板上写字之前,先把字打成两个或两个字。如果不是数字,那么你将不得不做铸造无论如何。