Dataframe 无法在Pypsark中为数据帧添加别名
我正在用Pyspark编写一个简单的数据帧脚本,但无法“别名”数据帧。我做错了什么Dataframe 无法在Pypsark中为数据帧添加别名,dataframe,pyspark,apache-spark-sql,Dataframe,Pyspark,Apache Spark Sql,我正在用Pyspark编写一个简单的数据帧脚本,但无法“别名”数据帧。我做错了什么 from pyspark.sql import SparkSession from pyspark.conf import SparkConf from pyspark.sql.types import IntegerType,StructType,StructField,StringType,IntegerType spark = SparkSession.builder.appName('myDFApp
from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
from pyspark.sql.types import IntegerType,StructType,StructField,StringType,IntegerType
spark = SparkSession.builder.appName('myDFApp').master('local').getOrCreate()
sc = spark.sparkContext
input_data = [('retail', '2017-01-03T13:21:00', 134),
('marketing', '2017-01-03T13:21:00', 100)]
rdd_schema = StructType([StructField('business', StringType(), True), \
StructField('date', StringType(), True), \
StructField("US.sales", IntegerType(), True)])
input_df = spark.createDataFrame(input_data, rdd_schema)
print('Count= ', input_df.count())
# this line below works
df_1 = input_df.select((input_df.business).alias('partnership'))
# this line does not work
df_2 = input_df.alias("s"). \
where(s.date > "2016-01-03")
df_2.show()
我得到的错误是:
Count= 2
Traceback (most recent call last):
File "/home/hadoop/opt/inscape/test_dataframe.py", line 22, in <module>
where(s.date > "2016-01-03")
NameError: name 's' is not defined
Count=2
回溯(最近一次呼叫最后一次):
文件“/home/hadoop/opt/inscape/test_dataframe.py”,第22行,在
其中(s.日期>“2016-01-03”)
NameError:未定义名称“s”
我做错了什么
谢谢当您为数据帧别名时,您更改了Spark元数据中的引用名称,而不是Python中的引用变量,在Python中,数据帧名称仍然是
输入值。您可以使用col
对象访问s
数据帧。请尝试以下方法修复此问题:
from pyspark.sql.functions import *
df_2 = input_df.alias("s"). \
where(col("s.date") > "2016-01-03")
别名与变量名不同。在这里,在您的示例中,您使用它作为变量。我可以给你一个建议。在代码中使用与变量名相同的别名。这会让事情变得更容易。对不起,我没听懂。您可以发布您建议的更新代码行吗?只需使用与您的数据帧名称相同的别名`df_2=input_df.alias(“df_2”)。\其中(df_2.date>“2016-01-03”)`因为您在案例中使用它作为变量。(其中(df_2.date>“2016-01-03”))很抱歉,这也不起作用。我求助于使用df_2=输入其中(输入日期>“2016-01-03”)且有效。我猜不能给DF加别名。