kar*_*ala 28 hive apache-spark spark-hive
我有一个spark应用程序,它将成功连接到hive并使用spark引擎查询hive表.
为了构建这个,我刚刚添加hive-site.xml到应用程序的类路径中,spark将读取hive-site.xml连接到它的Metastore.spark的邮件列表中提出了这种方法.
到现在为止还挺好.现在我想连接到两个配置单元存储,我不认为hive-site.xml在我的类路径中添加另一个将有所帮助.我提到了不少文章和火花邮件列表,但找不到任何人这样做.
有人可以建议我如何实现这一目标吗?
谢谢.
文件提到:
我认为这可以通过使用Spark SQL功能来连接和使用JDBC从远程数据库读取数据.
经过详尽的研发,我成功地使用JDBC连接到两个不同的hive环境,并将hive表作为DataFrame加载到Spark中进行进一步处理.
环境细节
Hadoop的2.6.0
Apache的蜂房2.0.0斌
火花1.3.1彬hadoop2.6
代码示例 HiveMultiEnvironment.scala
import org.apache.spark.SparkConf
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkContext
object HiveMultiEnvironment {
def main(args: Array[String]) {
var conf = new SparkConf().setAppName("JDBC").setMaster("local")
var sc = new SparkContext(conf)
var sqlContext = new SQLContext(sc)
// load hive table (or) sub-query from Environment 1
val jdbcDF1 = sqlContext.load("jdbc", Map(
"url" -> "jdbc:hive2://<host1>:10000/<db>",
"dbtable" -> "<db.tablename or subquery>",
"driver" -> "org.apache.hive.jdbc.HiveDriver",
"user" -> "<username>",
"password" -> "<password>"))
jdbcDF1.foreach { println }
// load hive table (or) sub-query from Environment 2
val jdbcDF2 = sqlContext.load("jdbc", Map(
"url" -> "jdbc:hive2://<host2>:10000/<db>",
"dbtable" -> "<db.tablename> or <subquery>",
"driver" -> "org.apache.hive.jdbc.HiveDriver",
"user" -> "<username>",
"password" -> "<password>"))
jdbcDF2.foreach { println }
}
// todo: business logic
}
Run Code Online (Sandbox Code Playgroud)
在使用SqlContext加载期间也可以设置其他参数,例如设置partitionColumn.Spark参考文档中的"JDBC To Other Databases"部分中的详细信息:https: //spark.apache.org/docs/1.3.0/sql-programming-guide.html
从Eclipse构建路径:
我没有尝试过的
对环境1使用HiveContext,对环境2使用SqlContext
希望这会有用.
| 归档时间: |
|
| 查看次数: |
3001 次 |
| 最近记录: |