当前位置:   article > 正文

spark sql完成jdbc数据源导入hive表,java API实现_java spark jdbc hive

java spark jdbc hive

1、基础环境

spark on yarn环境已经搭建,通过start-thriftserver.sh --master yarn启动 sparksubmit进程即可

dm数据库;

2、使用jdbc来访问spark,java API实现

2.1 创建datasource、connection、statement代码,这里属于通用代码,使用Druid连接池来创建jdbc连接

  1. /**
  2. * 读取druid.properties,并生成datasource
  3. */
  4. private static Statement init() throws Exception {
  5. Properties properties = new Properties();
  6. InputStream resourceAsStream =
  7. DataHubTask.class.getClassLoader().getResourceAsStream("conf/druid.properties");
  8. try {
  9. properties.load(resourceAsStream);
  10. } catch (IOException e) {
  11. LOG.error("The resource loaded failed, please check the path {}.", SPARK_THRIFT_SERVER_PATH);
  12. throw new RuntimeException(e);
  13. }
  14. dataSource = DruidDataSourceFactory.createDataSource(properties);
  15. Connection connection = dataSource.getConnection();
  16. // 返回statement
  17. return connection.createStatement();
  18. }

2.2 创建spark jdbc数据源的表,这里以达梦数据库为准, 使用statement执行该sql就行,执行完后,就可以查询该表的内容。

不过需要注意的是,由于是jdbc数据源,在hdfs目录上看这个表的存储情况,就会发现原始数据没有hdfs上存储

  1. CREATE table dm_table_3
  2. USING org.apache.spark.sql.jdbc
  3. OPTIONS (
  4. url "jdbc:dm://****:5236/test",
  5. driver "dm.jdbc.driver.DmDriver",
  6. dbtable "test.testtable_dm",
  7. user 'SYSDBA',
  8. password 'SYSDBA'
  9. );

2.3 创建spark hive表,这里以create as的方式导入

CREATE TABLE IF NOT EXISTS hive_dm_3 STORED AS ORC AS SELECT * FROM dm_table_3

等待执行完成后,就可以完成dm数据导入到hive表中

3、总结

这里只是一个简单的demo,具体放到生产环境的话,通过create as的方式来完成数据导入的话,还会有很多缺陷,比如无法通过create as的语法来完成分区表的创建。

具体可以使用:先创建hive分区表,然后使用insert into *** partition *** select * from*d 的方式来完成。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/593322
推荐阅读
相关标签
  

闽ICP备14008679号