目前博客Hadoop文章大都停留在Hadoop2.x阶段,本系列将依据黑马程序员大数据Hadoop3.x全套教程,对2.x没有的新特性进行补充更新,一键三连加关注,下次不迷路
为了实现程序的灵活性,可以手动指定从哪儿采集数据、以及配置上报到HDFS上什么样的位置。因为要从命令行中接收参数,此处使用Google-option来进行解析。以下是Google-option的github地址:https://github.com/pcj/google-options
Google-option这是Bazel Project中的命令行参数解析器。 com.google.devtools.common.options程序包已拆分为一个单独的jar,用于通用实用程序。
Bazel:是Google开源的构建工具,它的速度非常快,是Maven的5倍以上。采用了Cache和增量构建。修改一行代码,Bazel只需要0.5s,但Maven需要重新构建一次。Bazel可以比较容易扩展至其他语言,原生支持Java、C++,现在还支持Rust、Go、Scala等
<dependency>
<groupId>com.github.pcj</groupId>
<artifactId>google-options</artifactId>
<version>1.0.0</version>
</dependency>
package example;
import com.google.devtools.common.options.OptionsParser;
import java.util.Collections;
public class Server {
public static void main(String[] args) {
OptionsParser parser = OptionsParser.newOptionsParser(ServerOptions.class);
parser.parseAndExitUponError(args);
ServerOptions options = parser.getOptions(ServerOptions.class);
if (options.host.isEmpty() || options.port < 0 || options.dirs.isEmpty()) {
printUsage(parser);
return;
}
System.out.format("Starting server at %s:%d...\n", options.host, options.port);
for (String dirname : options.dirs) {
System.out.format("\\--> Serving static files at <%s>\n", dirname);
}
}
private static void printUsage(OptionsParser parser) {
System.out.println("Usage: java -jar server.jar OPTIONS");
System.out.println(parser.describeOptions(Collections.<String, String>emptyMap(),
OptionsParser.HelpVerbosity.LONG));
}
}
(1) 帮助,可以显示命令的帮助信息 help h 默认参数
(2) 要采集数据的位置 source s
(3) 生成待上传的临时目录 temp_dir t “/tmp/sentiment”
(4) 生成要上传到的HDFS路径 output o
参考代码:
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionsBase;
/**
* 参数实体类
* (1) 帮助,可以显示命令的帮助信息 help h 默认参数
* (2) 要采集数据的位置 source s
* (3) 生成待上传的临时目录 temp_dir t "/tmp/sentiment"
* (4) 生成要上传到的HDFS路径 output o
*/
public class SentimentOptions extends OptionsBase {
@Option(
name = "help",
abbrev = 'h',
help = "打印帮助信息",
defaultValue = "true"
)
public boolean help;
@Option(
name = "source",
abbrev = 's',
help = "要采集数据的位置",
defaultValue = ""
)
public String sourceDir;
@Option(
name = "pending_dir",
abbrev = 'p',
help = "生成待上传的待上传目录",
defaultValue = "/tmp/pending/sentiment"
)
public String pendingDir;
@Option(
name = "output",
abbrev = 'o',
help = "生成要上传到的HDFS路径",
defaultValue = ""
)
public String output;
}
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionsBase;
/**
* 参数实体类
* (1) 帮助,可以显示命令的帮助信息 help h 默认参数
* (2) 要采集数据的位置 source s
* (3) 生成待上传的临时目录 temp_dir t "/tmp/sentiment"
* (4) 生成要上传到的HDFS路径 output o
*/
public class SentimentOptions extends OptionsBase {
@Option(
name = "help",
abbrev = 'h',
help = "打印帮助信息",
defaultValue = "true"
)
public boolean help;
@Option(
name = "source",
abbrev = 's',
help = "要采集数据的位置",
defaultValue = ""
)
public String sourceDir;
@Option(
name = "pending_dir",
abbrev = 'p',
help = "生成待上传的待上传目录",
defaultValue = "/tmp/pending/sentiment"
)
public String pendingDir;
@Option(
name = "output",
abbrev = 'o',
help = "生成要上传到的HDFS路径",
defaultValue = ""
)
public String output;
}
博客主页:https://manor.blog.csdn.net 本文由 manor 原创,首发于 CSDN博客 Hadoop系列文章会每天更新!✨