hdfs路径 linux路径,4、记录1----获取hdfs上FileSystem的方法 记录2:正则匹配路径:linux、hdfs...

/**

* 获取hadoop相关配置信息

* @param hadoopConfPath 目前用户需要提供hadoop的配置文件路径

* @return

*/

public static Configuration getHadoopConfig(String hadoopConfPath){

Configuration conf=new Configuration();

conf.addResource(new Path(hadoopConfPath+"/core-site.xml"));

conf.addResource(new Path(hadoopConfPath+"/hdfs-site.xml"));

return conf;

}

/**

* 获取hdfs文件系统连接

* @param hadoopConfPath 目前用户需要提供hadoop的配置文件路径

* @return

*/

public static FileSystem getFileSystem(String hadoopConfPath) {

Configuration conf=new Configuration();

conf.addResource(new Path(hadoopConfPath+"/core-site.xml"));

conf.addResource(new Path(hadoopConfPath+"/hdfs-site.xml"));

FileSystem fs = null;

try {

fs=FileSystem.get(conf);

} catch (IOException e) {

LOGGER.error("从path={}路径获取hadoop配置信息错误:{}", hadoopConfPath, e.getMessage());

}

return fs;

}

正则匹配路径的方法:

/**

* 通过正则获取该目录下满足条件的所有目录

* @param luceneFilePathRegular 正则目录,如/user/solrindex/正则表达式

* @return 满足正则表达式的目录集合 list

*/

public static List fetchDirByRegularLinux(String luceneFilePathRegular){

List list=new ArrayList<>();

//分割获取主目录

int len= luceneFilePathRegular.lastIndexOf(EtlConstants.LINUX_ROUTE_SEGMENT)+1;

String mainDir=luceneFilePathRegular.substring(0, len);

String regular=luceneFilePathRegular.substring(len,luceneFilePathRegular.length());

File dir=new File(mainDir);

if(dir.exists() && dir.isDirectory()){

File [] arr= dir.listFiles();

for (File file : arr) {

if (file.exists() && file.isDirectory()) {

String fileName = file.getName();

if (matchStr(fileName, regular)) {

list.add(file.getAbsolutePath()+SolrUtil.INDEX_DIR_SUFFIX);

}

}

}

}

if(list.size()>0){

LOGGER.info("通过正则匹配到的Solr目录有:");

for (String s : list) {

LOGGER.info(s);

}

}else{

LOGGER.error("路径{}下,不存在满足正则:{}条件的目录", dir, regular);

}

return list;

}

/**

* 通过正则获取该目录下满足条件的所有目录

* @param luceneFilePathRegular 正则目录,如hdfs:/user/solrindex/正则表达式

* @param nameNodeConfigPath //获取name配置信息目录

* @return 满足正则表达式的目录集合 list

*/

public static List fetchDirByRegularHdfs(String luceneFilePathRegular,String nameNodeConfigPath){

List list=new ArrayList<>();

FileSystem fs=HdfsUtil.getFileSystem(nameNodeConfigPath);

String prefixHdfs=luceneFilePathRegular.split(":")[0];

String hdfsPath=luceneFilePathRegular.split(":")[1];

//分割获取主目录

int len= hdfsPath.lastIndexOf(EtlConstants.LINUX_ROUTE_SEGMENT)+1;

String mainDir=hdfsPath.substring(0, len);

String regular=hdfsPath.substring(len, hdfsPath.length());

try {

FileStatus[] fileStatuses = fs.globStatus(new Path(mainDir+"*"));

for (FileStatus fileStatus : fileStatuses){

if (fileStatus.isDirectory() && matchStr(fileStatus.getPath().getName(), regular)) {

list.add(prefixHdfs+":"+mainDir+fileStatus.getPath().getName()+SolrUtil.INDEX_DIR_SUFFIX);

}

}

} catch (IOException e) {

LOGGER.error("获取hdfs目录信息异常,路径:{},异常信息:{}",luceneFilePathRegular,e.getMessage());

e.printStackTrace();

}

if(list.size()>0){

LOGGER.info("通过正则匹配到的Solr目录有:");

for (String s : list) {

LOGGER.info(s);

}

}else{

LOGGER.error("路径{}下,不存在满足正则:{}条件的目录", luceneFilePathRegular, regular);

}

return list;

}

/**

* @Method Description:按正则表示是匹配字符串

* @param str

* @param regular

* @return

* @author: libingjie

*/

public static Boolean matchStr(String str, String regular) {

Pattern pattern = Pattern.compile(regular);

Matcher matcher = pattern.matcher(str);

return matcher.matches();

}

php程序无法记录log情况下可尝试下面方法记录log

error_reporting(E_ERROR | E_PARSE); function shutdownCallback(){    $arrError = error_get_last(); // ...

python获取文件扩展名的方法&lpar;转&rpar;

主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧.具体实现方法如下: 1 2 3 4 import os.path def file_extension(path ...

python获取文件扩展名的方法

主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧 import os.path def file_extension(path): ] print file_ex ...

Linux记录-shell获取hdfs used使用

#!/bin/bash export JAVA_HOME=/app/jdk/jdk1.8.0_92 export HADOOP_HOME=/app/hadoop export HADOOP_CONF_ ...

Eclipse 上传 删除 下载 分析 hdfs 上的文件

本篇讲解如何通过Eclipse 编写代码去操作分析hdfs 上的文件. 1.在eclipse 下新建Map/Reduce Project项目.如图:  项目建好后,会默认加载一系列相应的jar包. 下 ...

用流的方式来操作hdfs上的文件

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

HBase 在HDFS 上的目录树

总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系 ...

hadoop的API对HDFS上的文件访问

这篇文章主要介绍了使用hadoop的API对HDFS上的文件访问,其中包括上传文件到HDFS上.从HDFS上下载文件和删除HDFS上的文件,需要的朋友可以参考下hdfs文件操作操作示例,包括上传文件到 ...

iOS获取UIView上某点的颜色值

项目需求中遇到获取UIView上某个坐标点的RGB颜色值的需求,现在把自己找到的解决方案简单总结记录一下,遇到了下面的情况: 不可移动的UIView 旋转式的UIView 滑条式的UIView 不可移 ...

随机推荐

word-spacing汉字不起作用的解决方法

异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 调节文字间的距离,发现==>word-spacing汉字不起作用 研究发现, ...

【PHP基础】位运算与原码,反码,补码

对于有符号的而言:   ①二进制的最高位是符号位: 0表示正数,1表示负数   ②正数的原码,反码,补码都一样   ③负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)    ...

Spring IoC — 基于Java类的配置

普通的POJO只要标注@Configuration注解,就可以为Spring容器提供Bean定义的信息了,每个标注了@Bean的类方法都相当于提供一个Bean的定义信息. 基于Java类的配置方法和基 ...

排序算法SIX&colon;冒泡排序BubbleSort

/** *冒泡排序: * 两个两个比较,一轮过后最大的排在了最后面 * n个数变为n-1个没排好的数 * 再进行一轮 * 第二大的排在了倒数第二个 * 以此类推 * 直到排到第一个为止 * * 弄两个 ...

css实现居中的各种方法

css垂直居中有很多种方法,可以参考下这个网站

Noip2008提高组总结

Noip2008前三题是基础题,仔细一些都是可以AC的,第四题的证明很巧妙,但是看懂后代码其实很简单,感觉在这些大家都不屑去做的简单题中又学到了不少,四道题代码基本都是十几二十行就够了,渐渐感觉到,比 ...

hadoop dfs&period;datanode&period;du&period;reserved 预留空间配置方法

对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置 dfs.datanode.du.reserved< ...

idea 常用快捷键

=============intellij idea 快捷键============= ctrl+] 诸如{}围起来的代码块,使用该快捷键可以快速跳转至代码块的结尾处 ctrl+[ 同上,快速跳至代码 ...

JS的全局变量与局部变量及变量的提升

遇到全局变量与局部变量的时候总是出一些或多或少的问题,于是专门花时间去认真研究了一下全局变量与局部变量. 这是在网上看到的一个关于全局变量与局部变量的代码,看了下作者的解析,自己也进行了研究. &lt ...

StructureStreaming与kafka集成读取数据必要的jar包

org.apache.spark& ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值