Spark读写Hive的方式总结

本文详细介绍了如何使用Apache Spark进行Hive数据操作,包括Maven依赖配置、SparkSession初始化、读取Hive表数据及从本地文件加载数据到Hive等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. maven依赖添加spark-hive、mysql-connector-java

在这里插入图片描述
3. 代码编写

初始化sparkSession时,添加 .enableHiveSupport()开启hive操作

def initSparkSession:SparkSession = SparkSession.builder()
.appName(Test.getClass.getSimpleName)
.master(“local”)
.config(“spark.sql.warehouse.dir”, warehouseLocaion)
.config(“hive.exec.dynamic.partition”, “true”)
.config(“hive.exec.dynamic.partition.mode”, “nonstrict”)
.config(“hive.exec.max.dynamic.partitions”, 2000)
.enableHiveSupport()
.getOrCreate()

4、读取Hive

(1):读取Hive 1:
object Idmapping {

//val warehouseLocaion = “hdfs://hadoop-master:9000/user/hive/warehouse”
val warehouseLocaion = new File(“spark-warehouse”).getAbsolutePath

def main(args: Array[String]): Unit = {
val spark = initSparkSession

spark.sql("select * from cp_data.api_item_flow").limit(10).show()

spark.stop()

}
}

(2):读取Hive 其他写法2:
def main(args: Array[String]): Unit = {
val spark = initSparkSession
spark.table(“cp_data.api_item_flow”)
.createOrReplaceTempView(“tmp_table”)

spark.sql("select * from tmp_table").limit(10).show()

spark.stop()

}

(3): 读取Hive 其他写法3:
def main(args: Array[String]): Unit = {
val spark = initSparkSession

val sqlStr =
  """
    | select
    | *
    | from cp_data.api_item_flow
    | limit 10
  """.stripMargin

import spark.sql
sql(sqlStr).show()

spark.stop()

}

5、数据读取Hive*

(1):读取本地数据写入Hive:
val dataFrame = spark.read.parquet(inpath)
dataFrame.write.saveAsTable(“cp_data.api_item_flow”)

//或者添加模式
dataFrame.write.mode("append").format("parquet")
         .saveAsTable("cp_data.api_item_flow")

(2):读取本地数据写入Hive:
import spark.sql
sql(“use cp_data”)
sql(“load data local inpath ‘/opt/apps/data/xx.csv’” +
" overwrite into table cp_data.api_item_flow")

(3):查询表数据写入Hive:
val dataFrame = spark.sql(sqlStr)
dataFrame.createOrReplaceTempView(“tmp_table”)

val sqlStr2 =
  s"""
     | INSERT OVERWRITE TABLE cp_data.api_item_flow
     | select * from tmp_table
   """.stripMargin

val resDF = spark.sql(sqlStr2)

resDF.write.insertInto("cp_data.api_item_flow")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值