我正在尝试从spark程序加载配置单元表。到目前为止,我使用sparkshell将数据加载到配置单元表中。在了解了这一点之后,我在eclipse上编写了一个spark程序,您可以在下面看到。
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SaveMode
object SuperSpark {
case class partclass(id:Int, name:String, salary:Int, dept:String, location:String)
def main(argds: Array[String]) {
val warehouseLocation = "file:${system:user.dir}/spark-warehouse"
val sparkSession = SparkSession.builder.master("local[2]").appName("Saving data into HiveTable using Spark")
.enableHiveSupport()
.config("hive.exec.dynamic.partition", "true")
.config("hive.exec.dynamic.partition.mode", "nonstrict")
.config("hive.metastore.warehouse.dir", "/user/hive/warehouse")
.config("spark.sql.warehouse.dir", warehouseLocation)
.getOrCreate()
import sparkSession.implicits._
val partfile = sparkSession.read.textFile("partfile")
val partdata = partfile.map(p => p.split(","))
val partRDD = partdata.map(line => partclass(line(0).toInt, line(1), line(2).toInt, line(3), line(4)))
val partDF = partRDD.toDF()
partDF.write.mode(SaveMode.Append).insertInto("parttab")
}
}
我困惑的是,
我应该在程序中的何处添加数据库详细信息,如localhost/ip地址、端口号、数据库名称。
我使用的是sparkversion:2.1.1,这就是发布说明在'/usr/local/spark'中所说的(spark2.1.1是为hadoop2.6.4构建的)。是否需要使用hivecontext对象与配置单元表交互?
以下是my pom.xml中的依赖项:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.1</version>
<scope>provided</scope>
</dependency>
有人能告诉我怎么进一步吗?
1条答案
按热度按时间o2rvlv0m1#
我认为您需要提供元存储URI。您有两种选择:
在运行spark应用程序的资源类路径上使用hive-site.xml(如果您遵循中的标准maven结构,则可以将其放置在资源文件夹中):
在spark代码中,使用如下属性配置sparksession对象:
.config(“hive.metastore.uris”,“thrift://192.168.1.134:9083")