我有一堆 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 表时要遵循的标准程序是什么?
最佳答案
直接 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()
关于mysql - 如何高效地将 MySQL 表读入 Apache Spark/PySpark?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34130839/