我的Spark学习笔记(三)—— SparkSQL初体验

对SparkSQL先有一个感性认识。win10下使用了Cmder工具,操作如下:

$ pwd
D:\Temp\SparkSQLTest

$ dir
2019/12/03  16:11    <DIR>          .
2019/12/03  16:11    <DIR>          ..
2019/01/25  20:45           789,885 mysql-connector-java-5.1.18.jar

$ spark-shell --jars mysql-connector-java-5.1.18.jar --driver-class-path mysql-connector-java-5.1.18.jar

略(打开了spark-shell命令行)

scala> val url="jdbc:mysql://localhost:3306/collect-ticket"

scala> val username = "root"

scala> val password = "123456"

scala> import org.apache.spark.rdd.JdbcRDD

scala> import java.sql.{Connection, DriverManager, ResultSet}

scala> Class.forName("com.mysql.jdbc.Driver").newInstance

scala> val myRDD = new JdbcRDD( sc, () =>
     | DriverManager.getConnection(url, username, password) ,
     | "select id, code_name from fin_dict_val where id >= ? AND id <= ? ",
     | 1, 20, 3, r => r.getLong("id") + ", " + r.getString("code_name"))
myRDD: org.apache.spark.rdd.JdbcRDD[String] = JdbcRDD[0] at JdbcRDD at <console>:32

scala> myRDD.foreach(println)
1, xxx(隐藏了公司敏感信息)
7, xxx(隐藏了公司敏感信息)
14, xxx(隐藏了公司敏感信息)
8, xxx(隐藏了公司敏感信息)
2, xxx(隐藏了公司敏感信息)
9, xxx(隐藏了公司敏感信息)
15, xxx(隐藏了公司敏感信息)
16, xxx(隐藏了公司敏感信息)
10, xxx(隐藏了公司敏感信息)
3, xxx(隐藏了公司敏感信息)
11, xxx(隐藏了公司敏感信息)
17, xxx(隐藏了公司敏感信息)
12, xxx(隐藏了公司敏感信息)
4, xxx(隐藏了公司敏感信息)
13, xxx(隐藏了公司敏感信息)
18, xxx(隐藏了公司敏感信息)
5, xxx(隐藏了公司敏感信息)
19, xxx(隐藏了公司敏感信息)
20, xxx(隐藏了公司敏感信息)
6, xxx(隐藏了公司敏感信息)

scala> myRDD.saveAsTextFile("folder_01")

在当前目录下,生成了folder_01文件夹,里面有三个输出的数据文件:part-00000、part-00001、part-00002。

1, xxx(隐藏了公司敏感信息)
2, xxx(隐藏了公司敏感信息)
3, xxx(隐藏了公司敏感信息)
4, xxx(隐藏了公司敏感信息)
5, xxx(隐藏了公司敏感信息)
6, xxx(隐藏了公司敏感信息)
7, xxx(隐藏了公司敏感信息)
8, xxx(隐藏了公司敏感信息)
9, xxx(隐藏了公司敏感信息)
10, xxx(隐藏了公司敏感信息)
11, xxx(隐藏了公司敏感信息)
12, xxx(隐藏了公司敏感信息)
13, xxx(隐藏了公司敏感信息)
14, xxx(隐藏了公司敏感信息)
15, xxx(隐藏了公司敏感信息)
16, xxx(隐藏了公司敏感信息)
17, xxx(隐藏了公司敏感信息)
18, xxx(隐藏了公司敏感信息)
19, xxx(隐藏了公司敏感信息)
20, xxx(隐藏了公司敏感信息)

API:

class JdbcRDD[T](
sc : org.apache.spark.SparkContext,
getConnection : scala.Function0[java.sql.Connection],
sql : scala.Predef.String,
lowerBound : scala.Long,
upperBound : scala.Long,
numPartitions : scala.Int,
mapRow : scala.Function1[java.sql.ResultSet, T] = { /* compiled code */ }
)

体会下上述交互式窗口里输入的“1, 20, 3”:

  • 1对应lowerBound
  • 20对应upperBound
  • 3对应numPartitions

可以将20改为30或40再次执行下,将3改为4或5再次执行下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值