SparkSql 常见使用

  1. 使用sparkSession代替sparkContext
  2. sparkSession读各种源:
  • 读文件:val peopleDf = spark.read.textFile("E:\\07-hadoop\\01-spark\\sql\\people.txt")
  1. df转rdd : val peopleDs = peopleDf.rdd
  2. 将rdd变换为一行一行:
    val peopleRdd = peopleDs.map(line => Row(line.split(",")(0), line.split(",")(1).toInt))
  3. 通过rdd和schema 创建临时表 spark.createDataFrame(peopleRdd,schema).createOrReplaceTempView("people")
  4. 使用sql查询临时表:val peopleSqlDf = spark.sql("select * from people")
  5. 两个dateFrame之间join等操作:

val rdd =

      locationSqlDf.join(peopleSqlDf,locationSqlDf("name") === peopleSqlDf("name")).drop(locationSqlDf("name")).toDF()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark SQL 中的 Sort-Merge Join 是一种常见的基于磁盘的 join 算法。它利用 Spark 的分布式计算能力和磁盘存储,适用于大规模数据集的 join 操作。下面简单介绍一下如何使用 Spark SQL 中的 Sort-Merge Join。 假设我们有两个数据集,一个是 orders 表,包含订单信息,另一个是 customers 表,包含客户信息。我们想要通过这两个数据集中的共同字段 customer_id 进行 join 操作。 首先,需要将两个数据集分别进行排序,按照 customer_id 字段进行升序排序。可以使用 Spark SQL 中的 sort() 函数进行排序: ```scala val sortedOrders = spark.sql("SELECT * FROM orders ORDER BY customer_id") val sortedCustomers = spark.sql("SELECT * FROM customers ORDER BY customer_id") ``` 接下来,可以使用 Spark SQL 中的 join() 函数进行 join 操作。需要注意的是,join() 函数默认使用的是 Hash Join 算法,需要通过设置参数 spark.sql.join.preferSortMergeJoin=true 来启用 Sort-Merge Join 算法。 ```scala spark.sql("SET spark.sql.join.preferSortMergeJoin=true") val joinedData = sortedOrders.join(sortedCustomers, Seq("customer_id"), "inner") ``` 以上代码中,Seq("customer_id") 指定了 join 操作所使用的共同字段。"inner" 表示使用内连接。 最后,可以对 joinedData 进行操作,例如进行聚合操作: ```scala val result = joinedData.groupBy("customer_id").agg(sum("order_total")) ``` 以上就是使用 Spark SQL 中的 Sort-Merge Join 进行 join 操作的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值