首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >错误:路径在使用hadoop的spark提交中不存在

错误:路径在使用hadoop的spark提交中不存在
EN

Stack Overflow用户
提问于 2018-06-07 06:28:01
回答 2查看 1.4K关注 0票数 1

我们使用命令/home/ubuntu/spark/bin/spark-submit --master yarn --deploy-mode cluster --class "SimpleApp" /home/ubuntu/spark/examples/src/main/scala/sbt/target/scala-2.11/teste_2.11-1.0.jar来运行下面的脚本

代码语言:javascript
复制
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql._
import org.apache.spark.sql.types._
import org.apache.spark.sql.SparkSession
import org.apache.spark._
import org.apache.spark
import org.apache.spark.sql
import org.apache.spark.SparkContext._


object SimpleApp {
     def main(args: Array[String]) {

     val spark = SparkSession.builder().appName("query1").master("yarn").getOrCreate
     val header = StructType(Array(
             StructField("medallion", StringType, true),
             StructField("hack_license", StringType, true),
             StructField("vendor_id", StringType, true),
             StructField("rate_code", IntegerType, true),
             StructField("store_and_fwd_flag", StringType, true),
             StructField("pickup_datetime", TimestampType, true),
             StructField("dropoff_datetime", TimestampType, true),
             StructField("passenger_count", IntegerType, true),
             StructField("trip_time_in_secs", IntegerType, true),
             StructField("trip_distance", FloatType, true),
             StructField("pickup_longitude", FloatType, true),
             StructField("pickup_latitude", FloatType, true),
             StructField("dropoff_longitude", FloatType, true),
             StructField("dropoff_latitude", FloatType, true),
             StructField("payment_type", StringType, true),
             StructField("fare_amount", FloatType, true),
             StructField("surcharge", FloatType, true),
             StructField("mta_tax", FloatType, true),
             StructField("trip_amount", FloatType, true),
             StructField("tolls_amount", FloatType, true),
             StructField("total_amount", FloatType, true),
             StructField("zone", StringType, true)))

     val nyct = spark.read.format("csv").option("delimiter", ",").option("header", "true").schema(header).load("/home/ubuntu/trip_data/trip_data_fare_1.csv")
     nyct.createOrReplaceTempView("nyct_temp_table")

     spark.time(spark.sql("""SELECT zone, COUNT(*) AS accesses FROM nyct_temp_table WHERE (HOUR(dropoff_datetime) >= 8 AND HOUR(dropoff_datetime) <= 19) GROUP BY zone ORDER BY accesses DESC""").show())

     }
 }

这个想法是将脚本中的查询运行到使用spark和Hadoop的集群中。但在执行结束时,这会生成一个从路径/home/ubuntu/trip_data/trip_data_fare_1.csv读取csv文件的错误。This is the picture of the error

我认为问题在于节点从节点无法在主目录中找到该文件。有人知道如何修复此问题并在集群中运行此脚本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-07 06:36:41

因为您是在集群中运行的,所以在hdfs中应该有此文件。您可以使用以下命令将文件从本地文件系统拷贝到HDFS:

代码语言:javascript
复制
hadoop fs -put source_path dest_path

然后在您的代码中使用dest_path。

对于您,请在包含本地文件的主机上执行此操作:

代码语言:javascript
复制
hadoop fs -put /home/ubuntu/trip_data/trip_data_fare_1.csv <some_hdfs_location>

通过执行以下操作,验证副本是否正常工作:

代码语言:javascript
复制
hdfs dfs -ls <some_hdfs_location>
票数 0
EN

Stack Overflow用户

发布于 2018-06-07 09:02:12

如果我没记错的话,那么Spark正在考虑将您的本地文件系统作为其默认文件系统,这就是为什么您面临这种error.The配置应该传递到Spark上下文中,并且您应该在所有nodes.Make中提到spark-env.sh文件中的HADOOP_CONF_DIR确保在所有节点中指定了HADOOP_CONF_DIR的原因

代码语言:javascript
复制
val spCont = <Spark Context>
val config = spCont.hadoopConfiguration

config.addResource(new Path(s"${HADOOP_HOME}<path to core-site.xml>"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50730513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档