如何将mysql表高效地读入apachespark/pyspark?

ifmq2ha2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(298)

我有一堆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表时,应该遵循什么标准过程?

7vux5j2d

7vux5j2d1#

您可以这样做:

props = {"driver": "com.vertica.jdbc.Driver"}
df = spark.read.jdbc(
        url="jdbc:vertica://server:PORT/database?user=someUser&password=Password1",
        table="(select * from x where y=0) someAliasThatDontMatter",
        properties=props
    )

sql语句中的别名位允许您筛选、联接等

wwodge7n

wwodge7n2#

直接jdbc连接提供了一些其他选项,如partitioncolumn、lowerbound、upperbound和numpartitions

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

或者一个更重要的特性,您可以根据查询筛选数据。检查此链接

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

相关问题