Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dataframe 在select上触发数据帧澄清_Dataframe_Apache Spark_Pyspark - Fatal编程技术网

Dataframe 在select上触发数据帧澄清

Dataframe 在select上触发数据帧澄清,dataframe,apache-spark,pyspark,Dataframe,Apache Spark,Pyspark,我已经创建了一个dataframe ordersDF。下面是模式 root |-- order_id: long (nullable = true) |-- order_date: string (nullable = true) |-- order_customer_id: long (nullable = true) |-- order_status: string (nullable = true) 在某些地方,我们使用的是“order\u id”、order\u id、or

我已经创建了一个dataframe ordersDF。下面是模式

root
 |-- order_id: long (nullable = true)
 |-- order_date: string (nullable = true)
 |-- order_customer_id: long (nullable = true)
 |-- order_status: string (nullable = true)
 
在某些地方,我们使用的是“order\u id”、order\u id、ordersDF.order\u id。在什么时候使用哪一个,真的很混乱。 比如说

1)ordersDF.select(order_id).show() -- NameError: name 'order_id' is not defined
 ordersDF.where('order_id==9').show() --No error here
 
 2)ordersDF.select('order_id').show() --No error here
 
 3)ordersDF.select(ordersDF.order_id).show()--No error here
 
 4)ordersDF.where('ordersDF.order_id==9').show() --AnalysisException: cannot resolve '`ordersDF.order_id`' given input columns: [order_customer_id, order_date, order_id, order_status]; line 1 pos 0;

据我所知,您在通过专栏时感到困惑。
使用
DF.ColumnName
而不使用任何
或在单引号下传递列名,如
“order\u id”
。您可以使用这些方法中的任何一种来传递列


这应该可以解决您的问题。

select和where函数将字符串或列对象作为输入。你把它们弄混了

1a)您希望访问一列,该列是python中变量
order\u id
的名称。但是,您没有定义变量。这是在传递字符串。
1b)这是spark SQL,列
order\u id
应该是
9
。这转化为
从ordersDF中选择*,其中order\u id=9
。这是在传递字符串。
2) Spark sql用于选择列,类似于1a。转换为
从ordersDF中选择order\u id
。这是在传递字符串。
3) 这里通过
DF.column

传递一个column对象
4) 这里传递一个字符串,它不是列名。Spark实际上可以在列名中包含
(但如果将其保存到配置单元中,则不会)。因此,它正在寻找一个不存在的列。请注意,如果仍要使用表名,可以使用别名
ordersDF.alias(“ordersDF”)。选择(“ordersDF.orderId”)
有效。

澄清您的确切问题。展示你的努力和错误。查看在某些答案上发布问题的最佳方式。df=spark.createDataFrame([(1,1),(2,2),(3,3)],['id','value'])从pyspark.sql.functions导入df.withColumn(“value_desc”),when('value'==1,'one')。when(df.value==2,'two')。否则('other')。show()我得到的错误是TypeError:condition应该是一列。正如你前面提到的,我在单四分之一中使用了列'Value'。我不太会使用双引号。我是一个初学者。你能帮我解释一下吗。正如你前面提到的,我在单四分之一中使用了'value'列。现在我也尝试了双四分之一,但仍然不能使用df.withColumn(“value_desc”,当(“value”==1,'one')。当(df.value==2,'two')。否则('other'))。如果“value”不起作用,show()使用df.value