Получение NullPointerException при попытке загрузить таблицу phoenix из spark jdbc
Я использую приведенный ниже код для загрузки таблицы Phoenix в спарк:
sparkSession.read().option("driver", driverName).jdbc(url,
"emp.person", properties);
Здесь URL является действительным в соответствии с документом:
jdbc:phoenix:zkQuorum:2181/hbase-unsecure
И это вывод из sqlline.py:
sqlline version 1.1.8
0: jdbc:phoenix:localhost:2181> select * from emp.person;
+-------+--------------------------+------------+
| HOST | CREATED_DATE | TXN_COUNT |
+-------+--------------------------+------------+
| 1 | 2018-01-16 06:55:01.394 | 1 |
+-------+--------------------------+------------+
1 row selected (0.072 seconds)
Но с искрой я получаю ниже данное исключение:
2018-01-18 18:54:12 [pool-4-thread-1] ERROR c.i.i.t.spark2.algo.JDBCTableReader:114 - Error in JDBC operation:
java.lang.NullPointerException: null
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:72)
at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:113)
at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:47)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:306)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:146)
at org.apache.spark.sql.DataFrameReader.jdbc(DataFrameReader.scala:193)
at com.impetus.idw.turin.spark2.service.SparkService.runJDBCQuery(SparkService.java:365)
at com.impetus.idw.turin.spark2.algo.JDBCTableReader.execute(JDBCTableReader.java:112)
at com.impetus.idw.turin.core.Sequence.runSequence(Sequence.java:197)
at com.impetus.idw.turin.core.Status.runStatus(Status.java:156)
at com.impetus.idw.turin.core.Action.runAction(Action.java:179)
at com.impetus.idw.turin.core.Node.runNode(Node.java:359)
at com.impetus.idw.turin.core.Node.processCurrentAction(Node.java:282)
at com.impetus.idw.turin.core.Node.run(Node.java:305)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Пожалуйста, дайте мне знать, если у кого-нибудь есть решения для этого.