Saya lebih suka menggunakan kerangka data percikan asli, karena memungkinkan saya lebih banyak penyesuaian. Saya dapat menggunakan stringtype properti untuk mentransmisikan bidang json dari kerangka data ke bidang jsonb dalam tabel. Untuk kasus ini, kerangka data saya memiliki dua bidang.
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)
Sebelum menjalankan script di atas, sebaiknya buat tabel di postgresql, karena propertinya mode disetel sebagai tambahkan . Ini sebagai berikut:
create table your_tablename
(
my_json_field jsonb,
another_field int
)