PySpark 和 SparkSQL 之间有区别吗?如果是这样,有什么区别?
Is there are difference between PySpark and SparkSQL? If so, what's the difference?
长话短说,我的第一个任务是将文件从 SparkSQL 转换为 PySpark我的新工作。
但是,我看不出语法之外的许多差异。 SparkSQL 是 PySpark 的早期版本或其组件还是完全不同的东西?
是的,这是我第一次使用这些工具。但是,我对 Python 和 SQL 都有经验,所以这似乎不是一项艰巨的任务。只是想更好地理解。
我指的语法差异示例:
spark.read.table("db.table1").alias("a")
.filter(F.col("a.field1") == 11)
.join(
other = spark.read.table("db.table2").alias("b"),
on = 'field2',
how = 'left'
对战
df = spark.sql(
"""
SELECT b.field1,
CASE WHEN ...
THEN ...
ELSE ...
end field2
FROM db.table1 a
LEFT JOIN db.table2 b
on a.field1= b.field1
WHERE a.field1= {}
""".format(field1)
)
来自 documentation:PySpark 是一个界面,您可以在其中拥有 spark 的组件。 Spark 核心、SparkSQL、Spark Streaming 和 Spark MLlib。
来到分配给您的任务,看起来您的任务是将 SQL-heavy 代码翻译成更 PySpark-friendly 的格式。
长话短说,我的第一个任务是将文件从 SparkSQL 转换为 PySpark我的新工作。
但是,我看不出语法之外的许多差异。 SparkSQL 是 PySpark 的早期版本或其组件还是完全不同的东西?
是的,这是我第一次使用这些工具。但是,我对 Python 和 SQL 都有经验,所以这似乎不是一项艰巨的任务。只是想更好地理解。
我指的语法差异示例:
spark.read.table("db.table1").alias("a")
.filter(F.col("a.field1") == 11)
.join(
other = spark.read.table("db.table2").alias("b"),
on = 'field2',
how = 'left'
对战
df = spark.sql(
"""
SELECT b.field1,
CASE WHEN ...
THEN ...
ELSE ...
end field2
FROM db.table1 a
LEFT JOIN db.table2 b
on a.field1= b.field1
WHERE a.field1= {}
""".format(field1)
)
来自 documentation:PySpark 是一个界面,您可以在其中拥有 spark 的组件。 Spark 核心、SparkSQL、Spark Streaming 和 Spark MLlib。
来到分配给您的任务,看起来您的任务是将 SQL-heavy 代码翻译成更 PySpark-friendly 的格式。