Questions tagged «apache-spark-sql»

Apache Spark SQL是在快速通用集群计算系统Spark上进行“ SQL和结构化数据处理”的工具。它可用于从Hive,Parquet等检索数据,并在现有的RDD和数据集上运行SQL查询。


23
如何在Spark SQL的DataFrame中更改列类型?
假设我正在做类似的事情: val df = sqlContext.load("com.databricks.spark.csv", Map("path" -> "cars.csv", "header" -> "true")) df.printSchema() root |-- year: string (nullable = true) |-- make: string (nullable = true) |-- model: string (nullable = true) |-- comment: string (nullable = true) |-- blank: string (nullable = true) df.show() year make model comment blank 2012 …

8
如何选择每个组的第一行?
我有一个生成的DataFrame,如下所示: df.groupBy($"Hour", $"Category") .agg(sum($"value") as "TotalValue") .sort($"Hour".asc, $"TotalValue".desc)) 结果如下: +----+--------+----------+ |Hour|Category|TotalValue| +----+--------+----------+ | 0| cat26| 30.9| | 0| cat13| 22.1| | 0| cat95| 19.6| | 0| cat105| 1.3| | 1| cat67| 28.5| | 1| cat4| 26.8| | 1| cat13| 12.6| | 1| cat23| 5.3| | 2| cat56| 39.6| | 2| …

14
Spark-将CSV文件加载为DataFrame吗?
我想在Spark中读取CSV并将其转换为DataFrame并将其存储在HDFS中 df.registerTempTable("table_name") 我努力了: scala> val df = sqlContext.load("hdfs:///csv/file/dir/file.csv") 我得到的错误: java.lang.RuntimeException: hdfs:///csv/file/dir/file.csv is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [49, 59, 54, 10] at parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:418) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:277) at org.apache.spark.sql.parquet.ParquetRelation2$MetadataCache$$anonfun$refresh$6.apply(newParquet.scala:276) at scala.collection.parallel.mutable.ParArray$Map.leaf(ParArray.scala:658) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply$mcV$sp(Tasks.scala:54) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at scala.collection.parallel.Task$$anonfun$tryLeaf$1.apply(Tasks.scala:53) at scala.collection.parallel.Task$class.tryLeaf(Tasks.scala:56) at scala.collection.parallel.mutable.ParArray$Map.tryLeaf(ParArray.scala:650) at …


2
如何在Spark DataFrame中添加常量列?
我想在中添加DataFrame具有任意值的列(每行相同)。使用withColumn以下内容时出现错误: dt.withColumn('new_column', 10).head(5) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-50-a6d0257ca2be> in <module>() 1 dt = (messages 2 .select(messages.fromuserid, messages.messagetype, floor(messages.datetime/(1000*60*5)).alias("dt"))) ----> 3 dt.withColumn('new_column', 10).head(5) /Users/evanzamir/spark-1.4.1/python/pyspark/sql/dataframe.pyc in withColumn(self, colName, col) 1166 [Row(age=2, name=u'Alice', age2=4), Row(age=5, name=u'Bob', age2=7)] 1167 """ -> 1168 return self.select('*', col.alias(colName)) 1169 1170 @ignore_unicode_prefix AttributeError: 'int' object …


5
如何定义DataFrame的分区?
我已经开始在Spark 1.4.0中使用Spark SQL和DataFrames。我想在Scala的DataFrames上定义一个自定义分区程序,但不知道如何做到这一点。 我正在使用的数据表之一包含一个按帐户分类的事务列表,类似于以下示例。 Account Date Type Amount 1001 2014-04-01 Purchase 100.00 1001 2014-04-01 Purchase 50.00 1001 2014-04-05 Purchase 70.00 1001 2014-04-01 Payment -150.00 1002 2014-04-01 Purchase 80.00 1002 2014-04-02 Purchase 22.00 1002 2014-04-04 Payment -120.00 1002 2014-04-04 Purchase 60.00 1003 2014-04-02 Purchase 210.00 1003 2014-04-03 Purchase 15.00 至少在最初,大多数计算将在帐户内的交易之间进行。因此,我希望对数据进行分区,以便一个帐户的所有交易都在同一个Spark分区中。 但是我没有找到定义它的方法。DataFrame类具有一个称为“ …

9
如何将新列添加到Spark DataFrame(使用PySpark)?
我有一个Spark DataFrame(使用PySpark 1.5.1),想添加一个新列。 我已经尝试了以下方法,但没有成功: type(randomed_hours) # => list # Create in Python and transform to RDD new_col = pd.DataFrame(randomed_hours, columns=['new_col']) spark_new_col = sqlContext.createDataFrame(new_col) my_df_spark.withColumn("hours", spark_new_col["new_col"]) 使用此命令也出错: my_df_spark.withColumn("hours", sc.parallelize(randomed_hours)) 那么,如何使用PySpark将新列(基于Python向量)添加到现有DataFrame中?



5
如何在pyspark中将Dataframe列从String类型更改为Double类型
我有一个列为String的数据框。我想在PySpark中将列类型更改为Double type。 以下是我的方法: toDoublefunc = UserDefinedFunction(lambda x: x,DoubleType()) changedTypedf = joindf.withColumn("label",toDoublefunc(joindf['show'])) 只是想知道,这是正确的方法,就像通过Logistic回归运行时一样,我遇到了一些错误,所以我想知道,这是麻烦的原因。

10
使用无值过滤Pyspark数据框列
我正在尝试过滤具有None作为行值的PySpark数据框: df.select('dt_mvmt').distinct().collect() [Row(dt_mvmt=u'2016-03-27'), Row(dt_mvmt=u'2016-03-28'), Row(dt_mvmt=u'2016-03-29'), Row(dt_mvmt=None), Row(dt_mvmt=u'2016-03-30'), Row(dt_mvmt=u'2016-03-31')] 我可以使用字符串值正确过滤: df[df.dt_mvmt == '2016-03-31'] # some results here 但这失败了: df[df.dt_mvmt == None].count() 0 df[df.dt_mvmt != None].count() 0 但是每个类别上肯定都有价值。这是怎么回事?



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.