赞
踩
1、基础环境
spark on yarn环境已经搭建,通过start-thriftserver.sh --master yarn启动 sparksubmit进程即可
dm数据库;
2、使用jdbc来访问spark,java API实现
2.1 创建datasource、connection、statement代码,这里属于通用代码,使用Druid连接池来创建jdbc连接
- /**
- * 读取druid.properties,并生成datasource
- */
- private static Statement init() throws Exception {
- Properties properties = new Properties();
- InputStream resourceAsStream =
- DataHubTask.class.getClassLoader().getResourceAsStream("conf/druid.properties");
- try {
- properties.load(resourceAsStream);
- } catch (IOException e) {
- LOG.error("The resource loaded failed, please check the path {}.", SPARK_THRIFT_SERVER_PATH);
- throw new RuntimeException(e);
- }
-
- dataSource = DruidDataSourceFactory.createDataSource(properties);
-
- Connection connection = dataSource.getConnection();
- // 返回statement
- return connection.createStatement();
- }
2.2 创建spark jdbc数据源的表,这里以达梦数据库为准, 使用statement执行该sql就行,执行完后,就可以查询该表的内容。
不过需要注意的是,由于是jdbc数据源,在hdfs目录上看这个表的存储情况,就会发现原始数据没有hdfs上存储
- CREATE table dm_table_3
- USING org.apache.spark.sql.jdbc
- OPTIONS (
- url "jdbc:dm://****:5236/test",
- driver "dm.jdbc.driver.DmDriver",
- dbtable "test.testtable_dm",
- user 'SYSDBA',
- password 'SYSDBA'
- );
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 的方式来完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。