我正在尝试创建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
.
8条答案
按热度按时间xdnvmnnf1#
-+--+ | employeedatasimple.num | employeedatasimple.firstname | +
hm2xizp92#
-----+
6l7fqoea3#
-+--+ 5 rows selected (1.712 seconds) 0: jdbc:hive2://localhost:10000>` upd:mysql,postgres可以很好地与sparksql配合使用
lnlaulya4#
-----+
fjaof16o5#
-----+
qlckcl4x6#
-+--+ | 1 | Andrey | | 2 | Dmitry | | 3 | Semen | | 4 | Vadim | | 5 | Pavel | +
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; +eni9jsuy8#
可能是你的
oracle-db-connector.jar
不正确。下面是我的测试。