Я пытаюсь загрузить таблицу RDBMS из postgres в таблицу Hive на postgres.Для этого я написал следующую строку для извлечения данных:
val inputDF = spark.read.format("jdbc").option("url", connectionUrl).option("dbtable", s"(${query}) as inpData").option("user", devUserName).option("password", devPassword).option("partitionColumn","empID").
option("lowerBound", 14345745528L).option("upperBound", 1152921477111580662L).option("numPartitions",100).load()
spark-submit:
SPARK_MAJOR_VERSION=2 spark-submit --conf spark.ui.port=4090 --driver-class-path /home/repuser/jars/postgresql-42.1.4.jar --jars /home/repuser/jars/postgresql-42.1.4.jar --num-executors 120 --executor-cores 15 --executor-memory 50G --driver-memory 30G --driver-cores 4 --class com.partition.source.datacount counter.11-0.1.jar --master=yarn --deploy-mode=cluster --keytab /home/repuser/repuser.keytab --principal repuser@DEV.COM --files /usr/hdp/current/spark2-client/conf/hive-site.xml,testconnection.properties --name Counter --conf spark.executor.extraClassPath=/home/repuser/jars/postgresql-42.1.4.jar
В таблице, которую я пытаюсь прочитать, есть столбец: orderID, который являетсяпервичный ключ и имеет уникальные значения.Нижняя граница значений: минимальное значение orderID и верхняя граница: максимальное значение даются вместе с именем столбца: orderID в значении: oprion ("partitionColumn", "orderID"), и код работает хорошо, собирая все данные из GreenPlumи вставлять те же данные в Hive.
Но есть несколько таблиц с двумя столбцами в качестве первичных ключей.Например, у меня есть таблица userLocation
с двумя столбцами: referenceID & headerID
в качестве ее первичного ключа.Есть ли способ использовать несколько имен столбцов в .option("partitionColumn", columnName)
.
Я понимаю, что параметр partitionColumn
не обязательно должен быть столбцом первичного ключа.Если нет ни одного столбца с уникальными значениями, как, кто-нибудь может дать мне знать, как я могу разделить данные при чтении таблицы?