私はPostgreSQLに保存する必要があるSpark Dataframeを持っています。これは、エンコードしようとしているデフォルトPysparkでいるようだPostgreSQLでSpark DataframeをUTF-8エンコーディングで書く
df.write.jdbc(url=jdbc_url, table='{}.{}'.format(schema_name, table_name), mode='overwrite', properties=properties)
:として
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 95: ordinal not in range(128)
私の現在の文は次のようになります。私は次のエラーを取得するので、エンコードのオプションを除き、適切なPythonの文を持っていると思いますデータフレームはASCIIであるため、正しいエンコーディング(UTF-8)を指定する必要があります。どうやってするか?
私はoption("charset", "utf-8")
とoption("encoding", "utf-8")
とインターネットで見た他の多くの組み合わせを試しました。また、jdbc
に渡されたプロパティに"client_encoding":"utf8"
を追加しようとしました。しかし、何も動作していないようです。
本当にありがとうございます。
追加情報:
- のPython 2.7
- スパーク1.6.2
EDIT 1
私のデータベースがあるUTF-8でエンコード:
$ sudo -u postgres psql db_test -c 'SHOW SERVER_ENCODING'
server_encoding
-----------------
UTF8
(1 row)
EDIT 2
私は別のものがログに隠された、このエラーと一緒に気づい:PostgreSQLのドライバは、私が作成したい表不満た、既に作成されました!したがって、私はPostgreSQLから削除し、すべてが魅力的になった:)残念ながら、私は1つのことが他のものとどのように関連していたかを完全に理解できませんでした...おそらく、既に作成されたテーブルはASCIIエンコーディングを使用し、それらの間の非互換性の種類と保存されることを意図したデータ?
この記事は、任意のヒントを与えるのでしょうか? https://stackoverflow.com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20 –
私は2番目の編集を追加しました。私は問題が修正された説明するが、まだ方法を知らない: – frb