Questions tagged «apache-spark-sql»

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


9
在Apache Spark中将Dataframe的列值提取为列表
我想将数据框的字符串列转换为列表。我可以从DataframeAPI中找到RDD,因此我尝试先将其转换回RDD,然后再将toArray功能应用于RDD。在这种情况下,长度和SQL都可以正常工作。但是,我从RDD得到的结果在每个像这样的元素周围都有方括号[A00001]。我想知道是否有适当的方法可以将列转换为列表,也可以删除方括号。 任何建议,将不胜感激。谢谢!


8
如何删除pyspark数据框中的列
>>> a DataFrame[id: bigint, julian_date: string, user_id: bigint] >>> b DataFrame[id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint] >>> a.join(b, a.id==b.id, 'outer') DataFrame[id: bigint, julian_date: string, user_id: bigint, id: bigint, quan_created_money: decimal(10,0), quan_created_cnt: bigint] 有两个id: bigint,我想删除一个。我能怎么做?

10
Spark Dataframe区分名称重复的列
因此,正如我在Spark Dataframe中所知道的那样,多个列可以具有相同的名称,如下面的dataframe快照所示: [ Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})), Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=125231, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0047, 3: 0.0, 4: …



6
如何在Spark 2.0+中编写单元测试?
我一直在尝试找到一种合理的方法来SparkSession使用JUnit测试框架进行测试。尽管似乎有很好的示例SparkContext,SparkSession但即使在spark-testing-base的内部多个地方使用了相应的示例,我也无法弄清楚该示例如何工作。如果不是真正正确的方法,我很乐意尝试一种不使用基于火花测试的解决方案。 简单的测试用例(带有的完整MWE项目build.sbt): import com.holdenkarau.spark.testing.DataFrameSuiteBase import org.junit.Test import org.scalatest.FunSuite import org.apache.spark.sql.SparkSession class SessionTest extends FunSuite with DataFrameSuiteBase { implicit val sparkImpl: SparkSession = spark @Test def simpleLookupTest { val homeDir = System.getProperty("user.home") val training = spark.read.format("libsvm") .load(s"$homeDir\\Documents\\GitHub\\sample_linear_regression_data.txt") println("completed simple lookup test") } } 用JUnit运行它的结果是在负载线处有一个NPE: java.lang.NullPointerException at SessionTest.simpleLookupTest(SessionTest.scala:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at …




13
在Spark DataFrame写入方法中覆盖特定分区
我想覆盖特定的分区,而不是全部覆盖。我正在尝试以下命令: df.write.orc('maprfs:///hdfs-base-path','overwrite',partitionBy='col4') 其中df是具有要覆盖的增量数据的数据帧。 hdfs-base-path包含主数据。 当我尝试上述命令时,它将删除所有分区,并在hdfs路径中的df中插入这些分区。 我的要求是只覆盖指定hdfs路径中df中存在的那些分区。有人可以帮我吗?

5
在Spark中更新数据框列
查看新的spark数据框api,尚不清楚是否可以修改数据框列。 我怎么会去改变行的值x列y一个数据帧的? 在pandas这将是df.ix[x,y] = new_value 编辑:合并以下内容,您将无法修改现有数据框,因为它是不可变的,但是您可以返回具有所需修改的新数据框。 如果您只想根据条件替换列中的值,例如np.where: from pyspark.sql import functions as F update_func = (F.when(F.col('update_col') == replace_val, new_value) .otherwise(F.col('update_col'))) df = df.withColumn('new_column_name', update_func) 如果要对列执行某些操作并创建一个添加到数据框的新列: import pyspark.sql.functions as F import pyspark.sql.types as T def my_func(col): do stuff to column here return transformed_value # if we assume that my_func returns a …

5
如何在列表中使用Column.isin?
val items = List("a", "b", "c") sqlContext.sql("select c1 from table") .filter($"c1".isin(items)) .collect .foreach(println) 上面的代码引发以下异常。 Exception in thread "main" java.lang.RuntimeException: Unsupported literal type class scala.collection.immutable.$colon$colon List(a, b, c) at org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:49) at org.apache.spark.sql.functions$.lit(functions.scala:89) at org.apache.spark.sql.Column$$anonfun$isin$1.apply(Column.scala:642) at org.apache.spark.sql.Column$$anonfun$isin$1.apply(Column.scala:642) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35) at scala.collection.TraversableLike$class.map(TraversableLike.scala:245) at scala.collection.AbstractTraversable.map(Traversable.scala:104) at org.apache.spark.sql.Column.isin(Column.scala:642) 以下是我修复它的尝试。它编译并运行,但不返回任何匹配项。不知道为什么。 …

2
将OFF_HEAP存储与Spark 1.4.0和Tachyon 0.6.4一起使用时出错
我正在尝试使用Spark 1.4.0和Tachyon 0.6.4上的堆外存储来保持我的RDD,如下所示: val a = sqlContext.parquetFile("a1.parquet") a.persist(org.apache.spark.storage.StorageLevel.OFF_HEAP) a.count() 之后,我得到以下异常。 有什么想法吗? 15/06/16 10:14:53 INFO : Tachyon client (version 0.6.4) is trying to connect master @ localhost/127.0.0.1:19998 15/06/16 10:14:53 INFO : User registered at the master localhost/127.0.0.1:19998 got UserId 3 15/06/16 10:14:53 INFO TachyonBlockManager: Created tachyon directory at /tmp_spark_tachyon/spark-6b2512ab-7bb8-47ca-b6e2-8023d3d7f7dc/driver/spark-tachyon-20150616101453-ded3 15/06/16 10:14:53 …

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.