如何有效地将MySQL表读入Apache Spark / PySpark?

时间:2015-12-07 10:01:25

标签: mysql hadoop apache-spark apache-spark-sql

我有一堆MySQL表,我需要对它进行一些分析。我目前已将表格导出为CSV文件并将它们放在HDFS上。我在PySpark上从HDFS读取每个表到不同的RDD,现在进行分析。

from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('hdfs://path/to/file.csv')

今天我开始知道你可以直接从MySQL读取表到Spark。这样做是否有任何性能增强?使用Spark处理大型RDBMS表时要遵循的标准过程是什么?

2 个答案:

答案 0 :(得分:2)

直接JDBC连接为您提供了一些其他选项,如partitionColumn,lowerBound,upperBound,numPartitions

df = sqlContext.read.format('jdbc').options(url='jdbc:postgresql:dbserver', dbtable='schema.tablename').load()

或者一个更重要的功能,您可以根据查询过滤数据。请检查此link

df = sqlContext.read.format('jdbc').options(url='jdbc:postgresql:dbserver', dbtable='(select id,name from emp) as emp').load()

答案 1 :(得分:1)

你可以这样做:

{{1}}

SQL语句中的别名位允许您过滤,加入等