Questions tagged «apache-spark»

Apache Spark是用Scala编写的开源分布式数据处理引擎,为用户提供了统一的API和分布式数据集。Apache Spark的用例通常与机器/深度学习,图处理有关。

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
如何在数据集中存储自定义对象?
根据介绍Spark数据集: 当我们期待Spark 2.0时,我们计划对数据集进行一些激动人心的改进,特别是:...自定义编码器–虽然我们目前可以自动生成多种类型的编码器,但我们希望为自定义对象打开一个API。 并尝试在Dataset导致以下错误的情况下存储自定义类型: 找不到用于存储在数据集中的类型的编码器。导入sqlContext.implicits。支持基本类型(Int,String等)和产品类型(案例类)。_在将来的版本中将添加对序列化其他类型的支持。 要么: Java.lang.UnsupportedOperationException:未找到...的编码器。 是否有任何现有的解决方法? 请注意,此问题仅作为社区Wiki回答的切入点存在。随时更新/改善问题和答案。

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| …

15
如何在Spark中关闭INFO日志记录?
我使用AWS EC2指南安装了Spark,并且可以使用bin/pyspark脚本正常启动该程序以获取Spark 提示,并且还可以成功执行快速入门Quide。 但是,我无法终生解决如何INFO在每个命令后停止所有冗长的日志记录。 我在下面的代码(注释掉,设置为OFF)中的几乎所有可能的情况下都尝试了log4j.properties该conf文件夹,该文件夹位于我从中以及在每个节点上启动应用程序的文件夹中,没有任何反应。INFO执行每个语句后,我仍然可以打印日志记录语句。 我对应该如何工作感到非常困惑。 #Set everything to be logged to the console log4j.rootCategory=INFO, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.err log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n # Settings to quiet third party logs that are too verbose log4j.logger.org.eclipse.jetty=WARN log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO 这是我使用时的完整类路径SPARK_PRINT_LAUNCH_COMMAND: Spark命令:/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java -cp:/root/spark-1.0.1-bin-hadoop2/conf:/root/spark-1.0.1 -bin-hadoop2 / conf:/root/spark-1.0.1-bin-hadoop2/lib/spark-assembly-1.0.1-hadoop2.2.0.jar:/root/spark-1.0.1-bin-hadoop2/lib /datanucleus-api-jdo-3.2.1.jar:/root/spark-1.0.1-bin-hadoop2/lib/datanucleus-core-3.2.2.jar:/root/spark-1.0.1-bin-hadoop2 /lib/datanucleus-rdbms-3.2.1.jar -XX:MaxPermSize = 128m -Djava.library.path …

3
如何在Spark中将阶段划分为任务?
接下来,我们假设每个时间点仅运行一个Spark作业。 我到目前为止所得到的 这是我了解Spark会发生的情况: 当SparkContext被创建,每个工作节点开始执行人。执行程序是单独的进程(JVM),它们连接回驱动程序。每个执行程序都有驱动程序的jar。退出驱动程序,关闭执行程序。每个执行程序可以容纳一些分区。 执行作业时,根据沿袭图创建执行计划。 执行作业分为多个阶段,其中的阶段包含(在沿袭图中)尽可能多的相邻转换和动作,但没有混洗。因此,各个阶段被随机播放分开。 我明白那个 任务是通过序列化Function对象从驱动程序发送给执行程序的命令。 执行程序反序列化(使用驱动程序jar)命令(任务)并在分区上执行。 但 问题 我如何将阶段划分为这些任务? 特别: 任务是由转换和动作确定的还是一个任务中可以有多个转换/动作? 任务是否由分区确定(例如,每个分区每个阶段每个任务一个)。 任务是否由节点确定(例如,每个节点每个阶段一个任务)? 我的想法(即使是正确的,也只能部分回答) 在https://0x0fff.com/spark-architecture-shuffle中,随机播放与图片一起说明 我觉得规则是 每个阶段都分为#number-of-partitions个任务,不考虑节点数量 对于我的第一张图片,我会说我要执行3个贴图任务和3个缩小任务。 对于来自0x0fff的图像,我想说有8个地图任务和3个缩小任务(假设只有三个橙色和三个深绿色文件)。 在任何情况下都可以提问 那是对的吗?但是即使那是正确的,我的上述问题也没有全部回答,因为它仍然是开放的,是一项任务中包含多个操作(例如,多个地图)还是一项操作被分为一个任务。 别人怎么说 Spark中的任务是什么?Spark worker如何执行jar文件?而如何在Apache星火调度分割文件转换成任务?相似,但是我不觉得我的问题在那儿得到了清晰的回答。
143 apache-spark 

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 …


3
Apache Spark:map与mapPartitions?
RDD map和mapPartitions方法之间有什么区别?并且flatMap表现得像map还是喜欢mapPartitions?谢谢。 (edit),即两者之间在语义上或执行上有什么区别 def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = { rdd.mapPartitions({ iter: Iterator[A] => for (i <- iter) yield fn(i) }, preservesPartitioning = true) } 和: def map[A, B](rdd: RDD[A], fn: (A => B)) (implicit a: Manifest[A], b: Manifest[B]): RDD[B] = …

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类具有一个称为“ …

12
如何设置Apache Spark执行器内存
如何增加可用于Apache Spark执行器节点的内存? 我有一个2 GB的文件,适合加载到Apache Spark。我目前在1台机器上运行apache spark,因此驱动程序和执行程序在同一台机器上。本机具有8 GB的内存。 设置要缓存在内存中的文件后,当我尝试计算文件的行数时,出现以下错误: 2014-10-25 22:25:12 WARN CacheManager:71 - Not enough space to cache partition rdd_1_1 in memory! Free memory is 278099801 bytes. 我看了看文档,这里并设置spark.executor.memory到4g在$SPARK_HOME/conf/spark-defaults.conf UI显示该变量在Spark环境中设置。你可以在这里找到截图 但是,当我转到“ 执行器”选项卡时,单个执行器的内存限制仍然设置为265.4 MB。我也仍然遇到相同的错误。 我尝试了这里提到的各种方法,但是仍然出现错误,并且不清楚应该在哪里更改设置。 我正在从spark-shell交互式运行我的代码

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中?

10
如何打印RDD的内容?
我正在尝试将集合的内容打印到Spark控制台。 我有一个类型: linesWithSessionId: org.apache.spark.rdd.RDD[String] = FilteredRDD[3] 我使用命令: scala> linesWithSessionId.map(line => println(line)) 但这是打印: res1:org.apache.spark.rdd.RDD [Unit] = MappedRDD [4]在地图上的位置:19 如何将RDD写入控制台或将其保存到磁盘,以便查看其内容?


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.