Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Python 使用UTF-8编码在PostgreSQL中写入Spark数据帧_Python_Postgresql_Apache Spark_Encoding_Pyspark - Fatal编程技术网

Python 使用UTF-8编码在PostgreSQL中写入Spark数据帧

Python 使用UTF-8编码在PostgreSQL中写入Spark数据帧,python,postgresql,apache-spark,encoding,pyspark,Python,Postgresql,Apache Spark,Encoding,Pyspark,我有一个必须保存在PostgreSQL中的Spark数据帧。我想除了编码选项之外,我还有合适的Python语句,因为我得到了以下错误: UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 95: ordinal not in range(128) 我现在的句子是: df.write.jdbc(url=jdbc_url, table='{}.{}'.format(schema_name, tab

我有一个必须保存在PostgreSQL中的Spark数据帧。我想除了编码选项之外,我还有合适的Python语句,因为我得到了以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 95: ordinal not in range(128)
我现在的句子是:

df.write.jdbc(url=jdbc_url, table='{}.{}'.format(schema_name, table_name), mode='overwrite', properties=properties)
默认情况下,Pyspark试图将数据帧编码为ASCII,因此我应该指定正确的编码(UTF-8)。怎么做

我尝试过
选项(“字符集”、“utf-8”)
选项(“编码”、“utf-8”)
以及我在互联网上看到的许多其他组合。我还尝试在传递给
jdbc
的属性中添加
“client\u encoding”:“utf8”
。但似乎什么都不管用

任何帮助都将不胜感激

其他信息:

  • Python 2.7
  • Spark 1.6.2
编辑1

我的数据库是UTF-8编码的:

$ sudo -u postgres psql db_test -c 'SHOW SERVER_ENCODING'
 server_encoding 
-----------------
 UTF8
(1 row)
编辑2


我注意到日志中隐藏了另一个错误:PostgreSQL驱动程序抱怨我要创建的表已经创建!因此,我从PostgreSQL中删除了它,一切都变得很有趣:)不幸的是,我无法完全理解一件事与另一件事之间的关系。。。可能是因为已经创建的表使用了ASCII编码,并且它与要保存的数据之间存在某种不兼容

您应该尝试检查postgre数据库的编码

psql my_database -c 'SHOW SERVER_ENCODING'
如果这不是多字节编码,那么可能需要将其更改为多字节。有关更改DB编码的信息,请参见线程:

此外,此官方文件可能会有所帮助:

谢谢您的回答。数据库的编码是UTF-8(我用命令的结果编辑了我的问题)。这篇文章有什么提示吗?我添加了第二次编辑。我解释说问题已经解决,但仍然不知道如何解决:)