2018/5/9

关于textFile读取文件的问题

问题描述:

  今天第一次使用spark-shell来读取文件,我在本地建立了一个text.txt文件,然后用textFile读取生成rdd。

  但是执行的时候报错了,提示找不到文件。

解决方法:

1.

  首先我们知道,通过文件建立rdd的textFile("file:///")的方法可以填入本地地址和HDFS地址。

  我们这里想要用本地文件建立一个rdd,但是是通过spark-shell建立的。

  spark-shell默认并不是使用本地模式,而是集群中任意一个节点,我们只有保证那个节点有这个文件才不会报找不到文件的错误。

  但是当前spark-shell所有的机器你并不知道,只有你保证所有节点都有你的文件才可以。

  这样的解决方法基本上就是无稽之谈。

  那么我们如何解决呢?

  我们把文件放到HDFS中就行了。

  我们在使用HDFS的时候,可以在前边使用hadoop fs  或者  hdfs dfs 作为前缀

  hadoop fs -ls /         查看HDFS中的文件目录,HDFS中并没有cd命令,我们只能通过 -ls 找到要使用的文件夹。

  hadoop fs -mkdir /tmp/yuhang.zhang/   在/tmp中建立一个文件夹

  hadoop fs -put text.txt /tmp/yuhang.zhan   把本地的text.txt文件传入到HDFS:/tmp/yuhang.zhang 中

  放置成功后,我们用spark-shell再次进行读取。

  

  这样就不会报错了,我们这里并不用在加上什么  file:///hdfs:xxx.xxx.x.xx  地址了,默认就会在HDFS中去读取文件。

2.

  我们可以在IDEA中编写的时候会设置参数,我们一般设置new SparkConf().setMaster(local[*])本地模式

  这样我们打包完成后提交给spark的时候,任务运行的时候就会去本地读取文件啦。

  注意,我们提交任务的时候如果不添加任何参数的时候一般会默认最大资源,会很占用资源。

  下面是一般我们提交任务的时候采用的命令。

参数名 参数说明
--master  master 的地址,提交任务到哪里执行,例如 spark://host:port,  yarn,  local
--deploy-mode  在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client
--class  应用程序的主类,仅针对 java 或 scala 应用
--name  应用程序的名称
--jars  用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下
--packages  包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标
--exclude-packages  为了避免冲突 而指定不包含的 package
--repositories  远程 repository
--conf PROP=VALUE

指定 spark 配置属性的值,

例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

--properties-file  加载的配置文件,默认为 conf/spark-defaults.conf
--driver-memory  Driver内存,默认 1G
--driver-java-options  传给 driver 的额外的 Java 选项
--driver-library-path  传给 driver 的额外的库路径
--driver-class-path  传给 driver 的额外的类路径
--driver-cores  Driver 的核数,默认是1。在 yarn 或者 standalone 下使用
--executor-memory  每个 executor 的内存,默认是1G
--total-executor-cores  所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用
--num-executors  启动的 executor 数量。默认为2。在 yarn 下使用
--executor-core  每个 executor 的核数。在yarn或者standalone下使用
参数 参考值 说明
class org.apache.spark.examples.SparkPi 作业的主类。
master yarn 因为 E-MapReduce 使用 Yarn 的模式,所以这里只能是 yarn 模式。
  yarn-client 等同于 –-master yarn —deploy-mode client, 此时不需要指定deploy-mode。
  yarn-cluster 等同于 –-master yarn —deploy-mode cluster, 此时不需要指定deploy-mode。
deploy-mode client client 模式表示作业的 AM 会放在 Master 节点上运行。要注意的是,如果设置这个参数,那么需要同时指定上面 master 为 yarn。
  cluster cluster 模式表示 AM 会随机的在 worker 节点中的任意一台上启动运行。要注意的是,如果设置这个参数,那么需要同时指定上面 master 为yarn。
driver-memory 4g driver 使用的内存,不可超过单机的 core 总数。
num-executors 2 创建多少个 executor。
executor-memory 2g 各个 executor 使用的最大内存,不可超过单机的最大可使用内存。
executor-cores 2 各个 executor 使用的并发线程数目,也即每个 executor 最大可并发执行的 Task 数目。

 1.spark2-submit --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 1g --num-executors 2 \

  
--executor-cores 1 --queue report_job \

  --class

 2.--class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client \

   --driver-memory 4g –num-executors 2 --executor-memory 2g --executor-cores 2 \

  /opt/apps/spark-1.6.0-bin-hadoop2.6/lib/spark-examples*.jar 10

最后我们在贴一下hdfs的命令

# -help [cmd] //显示命令的帮助信息,如: hadoop fs -help ls
# -ls(r) <path>      //显示当前目录下所有文件,path是hadoop下的路径,如:/shikun/file
# -du(s) <path>    //显示目录中所有文件大小
# -count[-q] <path>     //显示目录中文件数量
# -mv <src> <dst> //移动多个文件到目标目录
# -cp <src> <dst>  //复制多个文件到目标目录
# -rm(r)         //删除文件(夹)
# -put <localsrc> <dst>       //本地文件复制到hdfs
# -copyFromLocal //同put
# -moveFromLocal       //从本地文件移动到hdfs
# -get [-ignoreCrc] <src> <localdst>  //复制文件到本地,可以忽略crc校验
# -getmerge <src> <localdst>             //将源目录中的所有文件排序合并到一个文件中
# -cat <src>   //在终端显示文件内容
# -text <src>  //在终端显示文件内容
# -copyToLocal [-ignoreCrc] <src> <localdst>  //复制到本地
# -moveToLocal <src> <localdst>
# -mkdir <path>   //创建文件夹
# -touchz <path>  //创建一个空文件

【spark】【问题】textFile找不到文件的更多相关文章

  1. spark textFile读取多个文件

    1.spark textFile读取File 1.1 简单读取文件 val spark = SparkSession.builder() .appName("demo") .mas ...

  2. Spark动态加载外部资源文件

    Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...

  3. Spark保存到HDFS或本地文件相关问题

    spark中saveAsTextFile如何最终生成一个文件 http://www.lxway.com/641062624.htm 一般而言,saveAsTextFile会按照执行task的多少生成多 ...

  4. Cocoapods - pod install 成功后找不到头文件解决

    问题描述:使用Cocoapods时,import 找不到头文件. 问题原因:这是因为还没设置头文件的目录. 解决办法:在项目的Target的里设置一下,添加cocoapods头文件目录:目录路径直接写 ...

  5. Visual Studio 编译项目失败,提示找不到文件

     博客地址:http://blog.csdn.net/FoxDave 今天碰到了一个蠢问题,虽然咱们正常情况下是遇不到的,但这确实是个应该注意的地方,所以简单记录一下. Visual Studio ...

  6. MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法

    MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法 错误2,系统找不到文件. 开始...运行... regedit  注册表项: HKEY_LOCAL_ ...

  7. iis php5.3.8 默认文档无效 404 - 找不到文件或目录

    环境:WIN2008 R2 IIS7.5 / .NET4.X 新开1站点,使用php(5.3.8),默认首页文档已设置为index.php,网站所在目录的网站运行时用户权限正确,应用程序池是asp.n ...

  8. 当Android工程中提示你找不到头文件,但你已经设置头文件路径了

    虽然在Android.mk文件中,配置了LOCAL_C_INCLUDES路径,但是工程中的红色叉号一直提示找不到头文件 这时,你在工程树目录中展开Includes项,捣鼓捣鼓,重新build下,或许就 ...

  9. pod JONSKit.h MBProgress.h 找不到头文件,怎么办?

    这时你看项目pod部分,多了JSONKit库.好了,第三方库就这么神奇的加进来. 头文件路径 那试试看使用JONSKit.h,在ViewController.m里引用下.找不到头文件,怎么办?还没设置 ...

随机推荐

  1. Python__return

    return的注意点: return返回的值, 没有任何类型限制 return是函数结束的标志,函数内可以写多个return,但执行一次,函数就立刻结束,并把return后的值作为本次调用的返回值.

  2. (转)VLC播放RTP打包发送的.264文件

    VLC播放RTP打包发送的.264文件 1,要有一个发送RTP包的264文件的服务器; 具体代码如下: rtp.h #include <WinSock2.h> #pragma commen ...

  3. TRegExpr正则表达式

    TRegExpr正则表达式 2006-10-24 10:55 DELPHi中的REGEXPR   [ 2006-03-29 11:33:46 am | Author: Admin ] 其实这个Pasc ...

  4. restful API(转自阮一峰)

    RESTful API 设计指南   网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不 ...

  5. HackerRank - powers-game-1 【博弈论】

    HackerRank - powers-game-1 [博弈论] 题意 给出 * 2^1 * 2^2 * 2^3 * 2^4 * 2^5 * 2^n 这一串东西 ,然后有两个玩家,*号是可以被替换掉的 ...

  6. 系统OOM复位定位

    定位OOM的工具: 1.多次收集Thread Dump信息kill -3  PID通过对比分析heap 对象信息和Thread信息来定位 2.通过 -Xloggc:D:/gc.log  -XX:+He ...

  7. 【笔记】css3实现网页平滑过渡效果...

    参考:http://www.imooc.com/video/7142 未完. <!DOCTYPE html> <html> <head> <meta char ...

  8. PHP练习题三

    1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21. echo date(‘Y-m-d H:i:s’, strtotime(‘-1 days’)); 2.不使用第三个变量交换两个 ...

  9. 制作基于Buildbot的自动化测试系统Docker镜像

    Buildbot in Docker 前言 最近使用Buildbot做了一个自动测试的框架,为了部署方便,可以把测试框架做成Docker镜像,方便部署.这里记录下过程,供大家参考. 项目介绍 项目是一 ...

  10. windchill系统——一些功能查找

    1.创建产品 导航栏的浏览——>最近的产品——>全部查看——>新建产品——>填写“名称”.选择“模板”.一定的“说明”.“专用访问权限”一般选择“否”——>“确定”选项 ...