mysql - 如何高效地将 MySQL 表读入 Apache Spark/PySpark?

标签 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 表时要遵循的标准程序是什么?

最佳答案

直接 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/

相关文章:

linux - 从主节点执行命令 "hadoop namenode -format "时出错?

configuration - 在 ec2 上手动配置 hadoop

Kafka 中的 java.io.NotSerializedException : org. apache.kafka.clients.consumer.ConsumerRecord

apache-spark - 缓存后立即“采取”操作 RDD 仅导致 2% 的缓存

mysql - 我遇到了 SQL 连接和计数问题

java - org.hibernate.QueryException : could not resolve property: is_approved of: com

mysql - 更新mysql中的多行?

mysql - 向字段添加一些字符直到 x 字段长度 MYSQL

java - 错误 - MapReduce 中的 Hadoop 字数统计程序

java - MapType 在 Spark 3.x : Encoders. bean 中导致 AnalysisException 到包含 map<String, someClass> 的对象失败,这在 Spark 2.4 中工作正常