假设Mysql中的表名为base_province,包含字段id、name、region_id,以下是Spark SQL编程实现:
```python
# 导入必要的库
from pyspark.sql import SparkSession
# 创建SparkSession对象
spark = SparkSession.builder.appName("read_mysql").getOrCreate()
# 读取Mysql表base_province创建DataFrame
df = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/test") \
.option("driver", "com.mysql.jdbc.Driver").option("dbtable", "base_province") \
.option("user", "root").option("password", "123456").load()
# 查看DataFrame
df.show()
# 创建DataFrame对应的视图
df.createOrReplaceTempView("province")
# DataFrame打印输出前2行数据,用“,”作为分隔符
df.show(2, False)
# DataFrame按照id字段升序排序,查询DataFrame前10行数据
df.orderBy("id").limit(10).show()
# 查询DataFrame中region_id字段值为5的数据
spark.sql("SELECT * FROM province WHERE region_id = 5").show()
```
其中,`jdbc`格式指定了从Mysql中读取数据,`url`、`dbtable`、`user`和`password`参数分别指定了连接Mysql的URL、表名、用户名和密码。`createOrReplaceTempView`方法创建了一个临时视图,可以通过SQL语句进行查询。`orderBy`方法按照指定字段排序,`limit`方法限制查询结果的数量。最后,使用`spark.sql`方法执行SQL语句查询特定条件的数据。