我是火花的新人。
感謝您的關注和幫助。這是我的問題。我spark-shell(version 3.2.1)在我的 mac os 中以本地模式啟動(Catalina 10.15.7),然后我在下面運行了一些代碼,沒有發生例外
import org.apache.spark.sql.types.{StringType, IntegerType, StructField, StructType}
import org.apache.spark.sql.Row
import org.apache.spark.sql.DataFrame
import org.apache.spark.rdd.RDD
val seq: Seq[(String, Int)] = Seq(("Bob", 14), ("Alice", 18))
val rdd: RDD[(String, Int)] = sc.parallelize(seq)
val schema:StructType = StructType( Array(StructField("name", StringType),StructField("age", IntegerType)))
val rowRDD: RDD[Row] = rdd.map(fileds => Row(fileds._1, fileds._2))
val dataFrame: DataFrame = spark.createDataFrame(rowRDD,schema)
最后我跑了
dataFrame.show
我得到了這個
22/06/22 11:18:19 ERROR util.Utils: Aborting task=======> (10 2) / 12]
java.io.IOException: Failed to connect to /192.168.1.3:50561
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:288)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:218)
at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:230)
at org.apache.spark.rpc.netty.NettyRpcEnv.downloadClient(NettyRpcEnv.scala:399)
at org.apache.spark.rpc.netty.NettyRpcEnv.$anonfun$openChannel$4(NettyRpcEnv.scala:367)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1496)
at org.apache.spark.rpc.netty.NettyRpcEnv.openChannel(NettyRpcEnv.scala:366)
at org.apache.spark.repl.ExecutorClassLoader.getClassFileInputStreamFromSparkRPC(ExecutorClassLoader.scala:135)
at org.apache.spark.repl.ExecutorClassLoader.$anonfun$fetchFn$1(ExecutorClassLoader.scala:66)
at org.apache.spark.repl.ExecutorClassLoader.findClassLocally(ExecutorClassLoader.scala:176)
at org.apache.spark.repl.ExecutorClassLoader.findClass(ExecutorClassLoader.scala:113)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.lang.ClassLoader.loadClass(ClassLoader.java:405)
uj5u.com熱心網友回復:
我將向您解釋為什么第一步沒有拋出錯誤以及在顯示實際顯示錯誤之后的一些事情。
Spark 與兩個不同的階段一起作業,transformations并且executions.
您的代碼的第一部分都是轉換,您告訴 Spark 驅動程式分析轉換并確保您的轉換能夠正常作業。但在您呼叫執行步驟之前不會執行任何操作。
什么是執行步驟?是任何會拋出輸出的東西,比如show()會在螢屏上顯示資料的東西,或者write()會寫輸出檔案的東西。
您的問題是,一旦您完成在本地驅動程式中運行的轉換,就無需發送到任何集群。一旦你做了一個執行步驟,它應該將命令發送到你的 spark 集群。因為您是在本地運行,所以沒有要發送的集群。所以為了避免這個問題,你應該添加 env 變數:
$ export SPARK_LOCAL_IP="127.0.0.1"
$ spark-shell
您將告訴您的應用程式您正在本地運行并且您沒有任何集群來發送轉換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/494562.html
標籤:阿帕奇火花
上一篇:檔案包含漏洞篇
下一篇:避免加載到空的表資料框中
