运行原始查询和sparksql查询有什么区别?

7gcisfzg  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(298)

我开始倾斜 spark ,我看到spark可以在sql上运行quires( postgres 就我而言)。
我不明白从spark运行查询和通过常规查询运行查询相比有什么好处?
例如:
在python中,我可以运行以下原始postgres查询:

connection = psycopg2.connect(user = "user",
                                  password = "pass",
                                  host = "127.0.0.1",
                                  port = "5432",
                                  database = "test_db") 

cursor = connection.cursor()
cursor.execute("select t1.name, t2.value from table1 t1, table2 t2 where t1.id = t2.id and t2.value > 100")

Spark中的等效物:

_select_sql = "select t1.name, t2.value from table1 t1, table2 t2 where t1.id = t2.id and t2.value > 100"
df_select = spark.read.jdbc(url=url,table=_select_sql,properties=db_properties)

那么,为什么要使用spark在sqldb上运行sql查询呢?
我听说spark可以以分布式方式处理数据。但我怎么能看到这里的改进呢?
在这两种情况下(原始查询和sparksql查询),查询是否会在postgresdb服务器上运行?如果是这样的话,表现会是一样的吗?

gkl3eglg

gkl3eglg1#

首先,通过spark运行postgresql查询,然后获取完成的结果,因此:
它更多地取决于任务,有时是合理的,有时不是——例如,为来自hive和postgre的数据建立连接
这里没有任何内容,您需要单独加载表(从tb中选择*),然后使用pyspark方法对它们执行操作
在您的示例中,pyspark所做的一切都是读取的,它有不同的指令,您在postgre中给出了所有的指令,它们是在哪里执行的。会更快吗?-同样,这完全取决于任务、数据和其他因素。你可以试试第二点,然后测量时间——如果数据结构简单,那么我认为在postgre上会更快

相关问题