前言
自己有个需求,如题,需要获取HDFS路径下所有的文件名,然后根据文件名用Spark进行后续操作。想了一下用Spark好像不太容易获取到,还要递归的去获取子目录下的文件名,于是查了一下,最后用Hadoop的API搞定,这里记录下,方便以后会用到。
1、数据
测试路径:/tmp/dkl,全路径名hdfs://ambari.master.com:8020/tmp/dkl
用hadoop的命令查看一下,该路径下都有哪些文件和文件夹1
hadoop fs -ls /tmp/dkl
自己有个需求,如题,需要获取HDFS路径下所有的文件名,然后根据文件名用Spark进行后续操作。想了一下用Spark好像不太容易获取到,还要递归的去获取子目录下的文件名,于是查了一下,最后用Hadoop的API搞定,这里记录下,方便以后会用到。
测试路径:/tmp/dkl,全路径名hdfs://ambari.master.com:8020/tmp/dkl
用hadoop的命令查看一下,该路径下都有哪些文件和文件夹1
hadoop fs -ls /tmp/dkl
最近一直在写前端,用的是JSP,但是很多人都说JSP已经过时了。既然做了几个月的前端,那就把前端学的好一点,学点新技术,跟上潮流。感觉Vue挺火的,所以这几天学了一下Vue,开始看的官方文档,然后直接用GitHub上比较火的项目进行学习,本地跑起来,看看效果、源码和代码结构,学习相关的插件等,并部署了其中一个项目到我的二级域名下:vue.dongkelun.com(感觉这个项目里的东西挺全的)。
因为一直用的github上别人搭建好的项目进行学习,担心和用Vue CLI创建的项目的代码结构有区别,所以就看了一下Vue CLI的官方文档,进行简单搭建,看看到底有什么区别,做到心中有数。
Spark有多种方式设置日志级别,这次主要记录一下如何在spark-submit设置Spark的日志级别。
因为Spark的日志级别默认为INFO(log4j.rootCategory=INFO, console),这样在运行程序的时候有很多我不需要的日志信息都打印出来了,看起来比较乱,比较烦,抓不住重点,而我只想把warn和error打印出来。
之前在测试环境或者在eclipse我是通过其他几种方式(下面会介绍)设置的,但是在生产环境下不允许我修改集群的配置文件(不是我负责~),而在代码里设置日志级别却不生效(原因还没找到),最后通过spark-submit里设置日志级别搞定的。
1 | spark-submit --conf "spark.driver.extraJavaOptions=-Dlog4j.configuration=file:log4j.properties" |
其中log4j.properties为我将本地的日志文件,拷贝到执行spark-submit的机器上
参考:https://blog.csdn.net/xueba207/article/details/50436684
more >>
有两个月没更新博客,部分原因是这两月的工作一直没写Spark程序,而是在写前端,所以虽然期间一直想写但是没有想出从哪方面入手。后端框架用的SpringBoot,前端用的是JSP、BootStrap、Echarts等,前端主要做成了大屏的样子,之前写过一段时间前端,但是没有整理笔记,导致现在再写,有些东西还要去翻原来的代码,比较麻烦,所以一直想整理一些前端的笔记,但是由于不是专业的前端,不是写的很深入,只想把自己实现的的效果对应的代码总结一下,如果只写代码的话,看起来比较单调,所以我想能有写一些前端页面,在博客里放上连接,这样看起来会比较直观。现在的博客用的是hexo,代码托管在coding上,有些页面,比如菜单、整体布局的效果在这上面不太好展现,所以想在自己的服务器用SpringBoot搭一个完整的系统,那么就要从头开始,从搭建SpringBoot程序开始,虽然SpringBoot自身带了tomcat,但是我感觉自己安装的tomcat用起来会比较方便,这就是为什么先写tomcat的安装了。
之前用过也配置过tomcat,但是没有从头到尾的在服务器上配置,下面就记录一下我的安装过程及碰到的问题,方便后面我在其他的服务上部署。
more >>
基于分区对数据进行操作可以让我们避免为每个数据元素进行重复的配置工作。诸如打开数据库连接或创建随机数生成器等操作,都是我们应当尽量避免为每个元素都配置一次的工作。Spark 提供基于分区的map 和foreach,让你的部分代码只对RDD 的每个分区运行一次,这样可以帮助降低这些操作的代价。
当基于分区操作RDD 时,Spark 会为函数提供该分区中的元素的迭代器。返回值方面,也返回一个迭代器。除mapPartitions() 外,Spark 还有一些别的基于分区的操作符,见下表:
函数名 | 调用所提供的 | 返回的 | 对于RDD[T]的函数签名 |
---|---|---|---|
mapPartitions() | 该分区中元素的迭代器 | 返回的元素的迭代器 | f: (Iterator[T]) → Iterator[U] |
mapPartitionsWithIndex() | 分区序号,以及每个分区中的元素的迭代器 | 返回的元素的迭代器 | f: (Int, Iterator[T]) → Iterator[U] |
foreachPartitions() | 元素迭代器 | 无 | f: (Iterator[T]) → Unit |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true