より多くのカスタマイズが可能になるため、ネイティブのsparkデータフレームを使用することを好みます。 stringtypeを使用できます。 jsonフィールドをデータフレームからテーブルのjsonbフィールドにキャストするプロパティ。この場合、私のデータフレームには2つのフィールドがあります。
from pyspark import SparkConf
sc = SparkContext.getOrCreate(SparkConf())
spark = SparkSession(sc)
df = spark.read.format('csv') \
.option('delimiter','|') \
.option('header','True') \
.load('your_path')
##some transformation...
url = 'jdbc:postgresql://your_host:5432/your_databasename'
properties = {'user':'*****',
'password':'*****',
'driver': "org.postgresql.Driver",
'stringtype':"unspecified"}
df.write.jdbc(url=url, table='your_tablename', mode='append', properties=properties)
上記のスクリプトを実行する前に、プロパティ mode があるため、postgresqlでテーブルを作成する必要があります。 追加として設定されます 。これは次のとおりです:
create table your_tablename
(
my_json_field jsonb,
another_field int
)