如何运行 Spark-shell hive.exec.dynamic.partition.mode=nonstrict
?
我尝试(如建议here)
export SPARK_MAJOR_VERSION=2; spark-shell --conf "hive.exec.dynamic.partition.mode=nonstrict" --properties-file /opt/_myPath_/sparkShell.conf'
Run Code Online (Sandbox Code Playgroud)
但警告“忽略非火花配置属性:hive.exec.dynamic.partition.mode=nonstrict”
PS:使用 Spark 版本 2.2.0.2.6.4.0-91,Scala 版本 2.11.8
需求在错误后到达df.write.mode("overwrite").insertInto("db.partitionedTable")
,
org.apache.spark.SparkException:动态分区严格模式需要至少一个静态分区列。要关闭此设置 hive.exec.dynamic.partition.mode=nonstrict
当我尝试使用Scala在Graphx中实现一个算法时,我没有发现可以激活下一个解决方案中的所有顶点.如何向所有图形顶点发送消息?在我的算法中,有一些超级步骤应该由所有顶点执行(无论它们是否接收到消息,因为即使没有接收消息也是应该在下一次迭代中处理的事件).
我在这里给出了在pregel的逻辑中实现的SSSP算法的官方代码,你可以看到只有接收消息的顶点将在下一次迭代中执行它们的程序但是对于我的情况,我希望pregel函数迭代运行,即每个超级步骤顶点执行他们的程序,他们可以投票停止,如果需要!这个例子中的推理看起来并不像Pregel的纸质逻辑.请问有关如何实现Pregel真实逻辑的任何想法?
val graph: Graph[Long, Double] =
GraphGenerators.logNormalGraph(sc, numVertices = 100).mapEdges(e => e.attr.toDouble)
val sourceId: VertexId = 42 // The ultimate source
// Initialize the graph such that all vertices except the root have distance infinity.
val initialGraph = graph.mapVertices((id, _) =>
if (id == sourceId) 0.0 else Double.PositiveInfinity)
val sssp = initialGraph.pregel(Double.PositiveInfinity)(
(id, dist, newDist) => math.min(dist, newDist), // Vertex Program
triplet => { // Send Message
if (triplet.srcAttr + triplet.attr < triplet.dstAttr) {
Iterator((triplet.dstId, triplet.srcAttr + triplet.attr))
} …
Run Code Online (Sandbox Code Playgroud) 我知道运行基于 Scala 的 Spark 代码的唯一两种方法是将 Scala 程序编译成 jar 文件并使用 Spark-submit 运行它,或者在 Spark-Shell 中使用 :load 运行 Scala 脚本。我的问题是,可以直接在命令行上运行 Scala 文件,而无需先进入 Spark-shell 然后发出 :load?
所以我试图加载推断自定义模式的csv文件,但是每次我遇到以下错误时:
不是一个Parquet文件。尾部的预期魔术数[80,65,82,49],但发现[110,111,13,10]
这就是我的程序和csv文件条目的样子,
年龄;工作;婚姻;教育;默认;平衡;住房;贷款;联系方式;天;月;任期;活动;周日;以前;结果; y 58;管理;已婚;三级;否; 2143;是;否;未知; 5; may; 261; 1; -1; 0;未知;否44;技术员;单身;中学;否; 29;是;否;未知; 5;可能; 151; 1; -1; 0;未知;否; 33;企业家;已婚;中学;否; 2;是;是;未知; 5;可能; 76; 1; -1; 0;未知;否
$ spark-shell --packages com.databricks:spark-csv_2.10:1.5.0
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import org.apache.spark.sql.types._
import org.apache.spark.sql.SQLContext
import sqlContext.implicits._
import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType}
val bankSchema = StructType(Array(
StructField("age", IntegerType, true),
StructField("job", StringType, true),
StructField("marital", StringType, true),
StructField("education", StringType, true),
StructField("default", StringType, true),
StructField("balance", IntegerType, true),
StructField("housing", StringType, true),
StructField("loan", StringType, true),
StructField("contact", StringType, true), …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Spark-Shell 运行我的 scala 文件。该文件调用一些已经加载到spark-context中的其他jar文件
问题是如果出现故障,它只会打印堆栈跟踪的一部分。有什么方法可以启用整个堆栈跟踪吗?
myclassn: ClassifyFields : queryDb -> Problems extracting from DB
at myclass.queryDb(ClassifyFields.java:231)
at myclass.getColumnsWithKeys(ClassifyFields.java:258)
... 78 elided
Run Code Online (Sandbox Code Playgroud) 需要通过spark-shell以静默模式执行scala脚本。当我使用时spark-shell -i "file.scala"
,执行后,我进入了scala交互模式。我不想进入那里。
我尝试执行spark-shell -i“file.scala”。但我不知道如何在静默模式下执行脚本。
spark-shell -i "file.scala"
Run Code Online (Sandbox Code Playgroud)
执行后,我进入
scala>
Run Code Online (Sandbox Code Playgroud)
我不想进入该scala>
模式
这个问题也是关于运行一个终止的脚本,即一个由spark-shell -i script.scala > output.txt
自己停止运行的“scala 脚本”(内部指令System.exit(0)
终止脚本)。
请参阅这个问题并举一个很好的例子。
它还需要一个“静音模式”,希望不会污染环境output.txt
。
假设Spark v2.2+。
PS:在很多情况下(通常是小工具和模块/算法测试)Spark 解释器可以比编译器更好......请,“让我们编译!” 这里没有答案。
我有 55 GB 数据需要处理。我在一台具有 32 个内核和 180GB RAM(无集群)的机器上运行 Spark-shell。由于它是一个单节点,Driver 和 Workers 驻留在同一个 JVM 进程中,默认情况下使用 514 MB。
我将 spark.driver.memory 设置为 170G
spark-shell --driver-memory 170g
Run Code Online (Sandbox Code Playgroud)
我正在执行映射操作,然后是 group_by,然后是 agg 并写入镶木地板文件。它仍然停留在
无论如何,是否可以通过更改 spark.executor.memory 或更改使用的内核数而不是使用 Master[*] 来优化性能?如何确定给定任务和数据大小的最佳设置?我应该精确调整 --conf 文件中的哪些值?
简而言之,如何强制 Spark 以最佳方式使用所有可用资源?
Day_Date,timeofday_desc,Timeofday_hour,Timeofday_minute,Timeofday_second,value
2017-12-18,12:21:02 AM,0,21,2,“1.779209040E+08”
2017-12-19,12:21:02 AM,0,21,2,“1.779209040E+08”
2017-12-20,12:30:52 AM,0,30,52,“1.779209040E+08”
2017-12-21,12:30:52 AM,0,30,52,“1.779209040E+08”
2017-12-22,12:47:10 AM,0,47,10,“1.779209040E+08”
2017-12-23,12:47:10 AM,0,47,10,“1.779209040E+08”
2017-12-24,02:46:59 AM,2,46,59,“1.779209040E+08”
2017-12-25,02:46:59 AM,2,46,59,“1.779209040E+08”
2017-12-26,03:10:27 AM,3,10,27,“1.779209040E+08”
2017-12-27,03:10:27 AM,3,10,27,“1.779209040E+08”
2017-12-28,03:52:08 AM,3,52,8,“1.779209040E+08”
Run Code Online (Sandbox Code Playgroud)
我正在尝试将value
列转换为177920904
val df1 = df.withColumn("s", 'value.cast("Decimal(10,4)")).drop("value").withColumnRenamed("s", "value")
Run Code Online (Sandbox Code Playgroud)
还尝试将值转换为Float
, Double
。始终将 null 作为输出
df1.select("value").show()
+-----------+
| value |
+-----------+
| null|
| null|
| null|
| null|
| null|
| null|
| null|
| null|
Run Code Online (Sandbox Code Playgroud)
df.printSchema
root
|-- Day_Date: string (nullable = true)
|-- timeofday_desc: string (nullable = true)
|-- Timeofday_hour: string (nullable …
Run Code Online (Sandbox Code Playgroud) 获取 Spark shell 的默认方式似乎是从网站下载发行版。然而, 这个 Spark 问题提到它可以通过安装sbt
。我找不到这方面的文档。spark-sql
在使用and的 sbt 项目中spark-core
,未spark-shell
找到二进制文件。
你如何逃离spark-shell
sbt?
我有一个要使用 Spark shell 执行的 Scala 程序,现在当我将粘贴复制到 spark shell 时它不起作用,我必须在里面逐行复制。
我应该如何复制shell中的所有程序?
谢谢。
apache-spark ×10
spark-shell ×10
scala ×8
csv ×1
dataframe ×1
graph-theory ×1
mysql ×1
parquet ×1
pyspark ×1
sbt ×1
spark-graphx ×1