Функция подсчета Spark Scala не отвечает - PullRequest
0 голосов
/ 07 мая 2019

Я загружаю некоторые данные из oracle db и пытаюсь выполнить действие по подсчету данных. Но не получаю никакого результата и в итоге получаю тайм-аут сеанса.Если я выполняю какие-либо другие функции, такие как first (), show (), я получаю результат.

Я попытался запустить оболочку scala с другими параметрами, как показано ниже.

 spark2-shell --jars /oracle/12c/product/12.1.0/client/jdbc/lib/ojdbc6.jar --executor-memory 10G  --num-executors 10 --driver-memory 2G yarn-client 

 spark2-shell --jars /oracle/12c/product/12.1.0/client/jdbc/lib/ojdbc6.jar 

val df = spark.read
.format("jdbc")
.option("url","jdbc:oracle:thin:@//MY_IP:MY_PORT/MY_SERVICE_NAME")
.option("dbtable","MY_TABLE")
.option("query", "select 'a','6b',count(*) from MY_TABLE_NAME partition 
for (to_date('07-MAY-2019','DD-MON-YYYY')) where COL='SOMETHING'")
.option("driver","oracle.jdbc.driver.OracleDriver")
.option("user", "MY_USERNAME")
.option("password", "MYPASSWORD")
.load()


 df.count()

Это не обеспечиваетрезультат

Я ожидаю, что эта функция подсчета выдаст общее количество записей, выгруженных из таблицы.

1 Ответ

1 голос
/ 07 мая 2019

Нет такой опции, как query, поэтому ваш код извлекает все данные из внешней таблицы, более того, он делает это, используя только один раздел .

Правильным option является dbtable, и запрос в соответствии со связанным ответом должен быть представлен как подзапрос:

.option("dbtable", "(select 'a','6b',count(*) from MY_TABLE_NAME partition 
  for (to_date('07-MAY-2019','DD-MON-YYYY')) where COL='SOMETHING') as t")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...