Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encoding pyspark在数据帧中写入重音字符_Encoding_Utf 8_Pyspark_Non Ascii Characters - Fatal编程技术网

Encoding pyspark在数据帧中写入重音字符

Encoding pyspark在数据帧中写入重音字符,encoding,utf-8,pyspark,non-ascii-characters,Encoding,Utf 8,Pyspark,Non Ascii Characters,我有一个spark任务,读取一个文件,然后逐行解析json,然后只读取一个json键作为示例 logs = sc.textFile(path_to_file) # log['a_key'] contain UTF data (accented character) logs = logs.map(lambda x: json.loads(x)).map(lambda x: x['a_key']) df = sql_context.createDataFrame(logs, ["test_col

我有一个spark任务,读取一个文件,然后逐行解析json,然后只读取一个json键作为示例

logs = sc.textFile(path_to_file)

# log['a_key'] contain UTF data (accented character)
logs = logs.map(lambda x: json.loads(x)).map(lambda x: x['a_key'])
df = sql_context.createDataFrame(logs, ["test_column"])
df.coalesce(1).write.format("com.databricks.spark.csv").options(header=True).save(destination_path)
当我查看输出的csv文件时,所有重音字符都被奇怪字符替换


如何使pyspark在csv文件中写入重音字符?我尝试过使用log['a_key'].encode('UTF-8'),但结果是一样的

首先要找出的是编码是否确实出错,或者您打开文件时使用的工具是否对数据的编码方式有错误的认识。具体而言,MS Excel强烈倾向于认为CSV文件位于CP-1252或类似文件中。例如,在这种情况下,用UTF-8正确编码的字符“á”将显示为“Ô。我也考虑过这一点,但我有“cat”文件(在excel中打开它之前),它实际上不是UTF-8。“Découvrez la vie”我已经使用了pyspark命令行,现在我100%确定正在csv中写入的变量是unicode u'D\xe9couvrez la vie de ch\xe2teau'这支持了我的观点。这意味着不仅Excel,而且您的终端认为您的文件是Latin-1或CP-1252,即使它正确地编码为UTF-8。您拥有的unicode字符串看起来也不错。在Excel中打开文件时,您只需更改命令行解释器的编码并指定UTF-8即可。echo$LANG给出en_GB.UTF-8我可以正确地对其他文件进行cat,因为我知道其中有重音字符,并且它们显示正确。
文件com.databricks.spark.csv