我是Flink的新生,我想知道如何从hdfs读取数据。有人可以给我一些建议或一些简单的例子吗?谢谢大家。
答案 0 :(得分:1)
如果您的文件格式为文本文件格式,则可以使用' readTextFile'来自&ExecueEnvironment'的方法对象
以下是各种数据源的示例。 (https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/batch/index.html#data-sources)
答案 1 :(得分:0)
Flink可以读取HDFS数据,该数据可以是text,Json,avro等任何格式。 支持Hadoop输入/输出格式是flink-java maven模块的一部分,该模块是编写flink作业时所需的。
示例1:读取名为JsonSeries的文本文件并在控制台上打印
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> lines = env.readTextFile("hdfs://localhost:9000/user/hadoop/input/JsonSeries.txt")
.name("HDFS File read");
lines.print();
示例2:使用输入格式
DataSet<Tuple2<LongWritable, Text>> inputHadoop =
env.createInput(HadoopInputs.readHadoopFile(new TextInputFormat(),
LongWritable.class, Text.class, "hdfs://localhost:9000/user/hadoop/input/JsonSeries.txt"));
inputHadoop.print();
答案 2 :(得分:0)
在 Centos7 机器上使用 Flink 1.13、Hadoop 3.1.2、Java 1.8.0,我能够从 HDFS 读取数据。
HADOOP_HOME
和 HADOOP_CLASSPATH
已经导出。我认为从 1.11 版开始发生了一些变化。我什至找不到一个简单的例子。因此,我分享我的例子。
我添加到 pom.xml
以下依赖项
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.2</version>
</dependency>
我的 Scala 代码:
package com.vbo.datastreamapi
import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
object ReadWriteHDFS extends App {
val env = StreamExecutionEnvironment.getExecutionEnvironment
val stream = env.readTextFile("hdfs://localhost:9000/user/train/datasets/Advertising.csv")
stream.print()
env.execute("Read Write HDFS")
}