gpt4 book ai didi

apache-spark - 使用 PySpark 读取数据库最快的方法是什么?

转载 作者:行者123 更新时间:2023-12-04 04:56:33 24 4
gpt4 key购买 nike

我正在尝试使用 PySpark 和 SQLAlchamy 读取数据库表,如下所示:

SUBMIT_ARGS = "--jars mysql-connector-java-5.1.45-bin.jar pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS
sc = SparkContext('local[*]', 'testSparkContext')
sqlContext = SQLContext(sc)

t0 = time.time()
database_uri = 'jdbc:mysql://{}:3306/{}'.format("127.0.0.1",<db_name>)
dataframe_mysql = sqlContext.read.format("jdbc").options(url=database_uri, driver = "com.mysql.jdbc.Driver", dbtable = <tablename>, user= <user>, password=<password>).load()
print(dataframe_mysql.rdd.map(lambda row :list(row)).collect())

t1 = time.time()
database_uri2 = 'mysql://{}:{}@{}/{}'.format(<user>,<password>,"127.0.0.1",<db_name>)
engine = create_engine(database_uri2)
connection = engine.connect()
s = text("select * from {}.{}".format(<db_name>,<table_name>))
result = connection.execute(s)
for each in result:
print(each)
t2= time.time()

print("Time taken by PySpark:", (t1-t0))
print("Time taken by SQLAlchamy", (t2-t1))

这是获取大约 3100 行所花费的时间:

Time taken by PySpark: 12.326745986938477
Time taken by SQLAlchamy: 0.21664714813232422

为什么 SQLAlchamy 的性能优于 PySpark?有什么办法可以让它更快吗?我的做法有没有错误?

最佳答案

Why SQLAlchamy is outperforming PySpark? Is there any way to make this faster? Is there any error in my approach?

不止一个。最终,您尝试以不打算使用的方式使用 Spark,测量不正确的东西并引入大量间接。总体:

  • JDBC DataSource 效率低下,并且在您使用它时完全按顺序进行。检查parallellizing reads在 Spark 陷阱中。
  • 收集数据并非旨在用于实际生产。
  • 通过将数据转换为 RDD 并序列化、获取驱动程序并反序列化,您引入了很多间接方法。
  • 您的代码不仅测量数据处理时间,还测量集群/上下文初始化时间。
  • local 模式(专为原型(prototype)设计和单元测试而设计)只是锦上添花。
  • 等等...

所以在一天结束时,您的代码很慢,但它不是您在生产应用程序中使用的东西。 SQLAlchemy 和 Spark 是为完全不同的目的而设计的 - 如果您正在寻找低延迟数据库访问层,Spark 不是正确的选择。

关于apache-spark - 使用 PySpark 读取数据库最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com