Apache spark 使用pyspark在Bigquery中将数据编码为ISO_8859_1
我的pyspark数据框中有多语言字符。在将数据写入bigquery后,由于其Deafolt编码方案(utf-8),它会向我显示奇怪的字符。 如何使用pyspark/dataproc将Bigquery中的编码更改为ISO_8859_1Apache spark 使用pyspark在Bigquery中将数据编码为ISO_8859_1,apache-spark,pyspark,google-cloud-dataproc,Apache Spark,Pyspark,Google Cloud Dataproc,我的pyspark数据框中有多语言字符。在将数据写入bigquery后,由于其Deafolt编码方案(utf-8),它会向我显示奇怪的字符。 如何使用pyspark/dataproc将Bigquery中的编码更改为ISO_8859_1 首先要检查源代码或源代码系统 它如何发送数据,并了解它是哪种编码。如果仍然不同,则进行以下调查 AFAIK pyspark正在读取utf-8编码的json,并根据您的评论加载到bigquery中。所以它的默认错误是utf-8 您可以将编码更改为ISO-8859-1
首先要检查源代码或源代码系统 它如何发送数据,并了解它是哪种编码。如果仍然不同,则进行以下调查 AFAIK pyspark正在读取utf-8编码的json,并根据您的评论加载到bigquery中。所以它的默认错误是utf-8 您可以将编码更改为ISO-8859-1并加载json,如下所示
spark.read.option('encoding','ISO-8859-1').json("yourjsonpathwith latin-1 ")
并加载到bigquery
还有
将数据帧写入bigquery时
- 您可以使用iso-8859-1和utf-8格式的col和charset使用
函数进行测试/调试,以了解使用decode
以及查看其是否能够解码为utf-8pyspark.sql.functions.decode(columnname,charset)
- 您可以使用
pyspark.sql.functions.decode(col,charset)
spark.read.option('encoding','ISO-8859-1').json("yourjsonpathwith latin-1 ")
并加载到bigquery
还有
将数据帧写入bigquery时
- 您可以使用iso-8859-1和utf-8格式的col和charset使用
函数进行测试/调试,以了解使用decode
以及查看其是否能够解码为utf-8pyspark.sql.functions.decode(columnname,charset)
- 您可以使用
pyspark.sql.functions.decode(col,charset)
- 源文件本身存在一个问题,因为它通过api传输。因此能够解决问题。源文件本身存在问题,因为它通过api传输。因此能够解决问题。“将数据写入bigquery后,它会显示奇怪的字符”。。。。。。。你能给我举个例子吗?您在文本编辑器中的何处打开其内容。您正在使用的文本编辑器可能是问题所在。给出一些数据示例,否则很难回答这个问题。我只在bigquery中查看数据。这是一个奇怪字符的例子,我看到了:这些数据的来源是什么?我的意思是csv->bigqueryit是一个json文件,我在pyspark中解析它,并在解析时用ISO_8598_1对数据进行编码。因此,转换就像json文件-->pyspark dataframe-->bigquery表“将数据写入bigquery后,它会显示奇怪的字符”。。。。。。。你能给我举个例子吗?您在文本编辑器中的何处打开其内容。您正在使用的文本编辑器可能是问题所在。给出一些数据示例,否则很难回答这个问题。我只在bigquery中查看数据。这是一个奇怪字符的例子,我看到了:这些数据的来源是什么?我的意思是csv->bigqueryit是一个json文件,我在pyspark中解析它,并在解析时用ISO_8598_1对数据进行编码。因此,转换就像json文件-->pyspark数据帧-->bigquery tableHi Ram,我已经用pyspark进行了编码,正是您在上面的回答中提到的。我不确定bigquery是否会自动将其视为ISO-8859-1,或者在将表写入bigquery时必须指定。指定编码写入大查询时,我正在努力找到如何在写入bigquery时指定编码。我正在使用pyspark bigquery连接器写入bigquerystill不起作用,在我看来,pyspark bigquery连接器首先将数据写入临时存储桶,然后再写入bigquery,有没有解决方法now@RamGhadiyaram请注意,spark bigquery连接器没有“编码”选项,由于它从数据帧的rowsHi Ram中获取字符串,我已经用pyspark进行了编码,这正是您在上面的回答中提到的。我不确定bigquery是否会自动将其视为ISO-8859-1,或者在将表写入bigquery时必须指定。指定编码写入大查询时,我正在努力找到如何在写入bigquery时指定编码。我正在使用pyspark bigquery连接器写入bigquerystill不起作用,在我看来,pyspark bigquery连接器首先将数据写入临时存储桶,然后再写入bigquery,有没有解决方法now@RamGhadiyaram请注意,spark bigquery连接器没有“编码”选项,因为它从数据帧的行中获取字符串