使用oracledb表创建sparksqljdbc联合失败,出现奇怪的错误

vqlkdk9b  于 2021-06-28  发布在  Hive
关注(0)|答案(8)|浏览(260)

我正在尝试创建hive表,它将指向oracledb表,但是失败了 org.apache.spark.sql.AnalysisException 步骤:
重建 spark with hive, hive-thrift 支持
地点 oracle-db-connector.jar 类内路径
设置 thrift server 使用连接到它 beeline ```
beeline> !connect jdbc:hive2://localhost:10100 Connecting to jdbc:hive2://localhost:10100

创建 `hive table:` ```
CREATE TABLE oracle3_connector  
USING org.apache.spark.sql.jdbc  
OPTIONS (
   driver "oracle.jdbc.driver.OracleDriver",
   url "jdbc:oracle:thin:@hostname:1521:AUX3",
   user "ANY",
   dbtable "ANY_TABLE",
   password "ANY_PASS"
);

+---------+--+ | Result  |
+---------+--+
+---------+--+ No rows selected (3.473 seconds)

从表中选择数据

select * from oracle3_connector;

Error: org.spark_project.guava.util.concurrent.UncheckedExecutionException: org.apache.spark.sql.AnalysisException: org.apache.spark.sql.jdbc does not allow user-specified schemas.; (state=,code=0)

upd:同样的安装可以很好的工作 postgres .

xdnvmnnf

xdnvmnnf1#

-+--+ | employeedatasimple.num | employeedatasimple.firstname | +

6l7fqoea

6l7fqoea3#

-+--+ 5 rows selected (1.712 seconds) 0: jdbc:hive2://localhost:10000>` upd:mysql,postgres可以很好地与sparksql配合使用

qlckcl4x

qlckcl4x6#

-+--+ | 1 | Andrey | | 2 | Dmitry | | 3 | Semen | | 4 | Vadim | | 5 | Pavel | +

xam8gpfp

xam8gpfp7#

apache配置单元jira中存在功能请求https://issues.apache.org/jira/browse/hive-1555 它也是很久以前创造的
因此,如果您真的需要创建由oracle表支持的配置单元表,您可以使用od4h。
步骤:
在配置单元服务器类路径中添加od4h libs并启动配置单元服务器
使用直线连接到此服务器 !connect jdbc:hive2://localhost:10000 检查是否有oracle驱动程序
0: jdbc:hive2://localhost:10000> !扫描完成1702ms 13驱动程序类找到兼容版本驱动程序类是12.1
oracle.jdbc.oracledriver是12.1
oracle.jdbc.driver.oracledriver
在oracle中创建表: CREATE TABLE PERSON ( NUM NUMBER(*) PRIMARY KEY NOT NULL, FIRSTNAME VARCHAR2(20) ); 在配置单元中创建表 CREATE EXTERNAL TABLE EmployeeDataSimple ( NUM int, FIRSTNAME string ) STORED BY 'oracle.hcat.osh.OracleStorageHandler' WITH SERDEPROPERTIES ( 'oracle.hcat.osh.columns.mapping' = 'NUM,FIRSTNAME') TBLPROPERTIES ( "mapreduce.jdbc.url" = "jdbc:oracle:thin:@//localhost:49161/XE", "mapreduce.jdbc.username" = "dummy", "mapreduce.jdbc.password" = "dumb", "mapreduce.jdbc.input.table.name" = "DUMMY.PERSON" ); 检查其是否按预期工作: `0: jdbc:hive2://localhost:10000> select * from employeedatasimple; +

eni9jsuy

eni9jsuy8#

可能是你的 oracle-db-connector.jar 不正确。下面是我的测试。

相关问题