Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flink 从ApacheFlink中的HDFS地址流式传输文件_Apache Flink - Fatal编程技术网

Apache flink 从ApacheFlink中的HDFS地址流式传输文件

Apache flink 从ApacheFlink中的HDFS地址流式传输文件,apache-flink,Apache Flink,在我的Flink代码中,我正在传输一个位于HDFS文件夹中的文件,我得到了错误“(没有这样的文件或目录)”,但是我确信文件名和地址是正确的,因为我在批处理方法中使用了相同的方法,并且每件事情都顺利进行。 有人知道问题出在哪里吗? 这是我的密码: DataStream myStream= 环境添加源(新的MyObject生成器(“hdfs://../Data/Dataset1.csv")); 及其相关类别: 公共类MyObjectGenerator实现SourceFunction{ 私有字符串数

在我的Flink代码中,我正在传输一个位于HDFS文件夹中的文件,我得到了错误“(没有这样的文件或目录)”,但是我确信文件名和地址是正确的,因为我在批处理方法中使用了相同的方法,并且每件事情都顺利进行。 有人知道问题出在哪里吗? 这是我的密码:

DataStream myStream=
环境添加源(新的MyObject生成器(“hdfs://../Data/Dataset1.csv"));
及其相关类别:

公共类MyObjectGenerator实现SourceFunction{
私有字符串数据文件路径;
私人浮动服务速度因子;
私有整数rowNo;
专用瞬态缓冲读卡器;
私有瞬态输入流输入流;
公共MyObject生成器(字符串数据文件路径){
这(数据文件路径,1.0f);
}
公共MyObject生成器(字符串数据文件路径、浮点服务速度因子){
this.dataFilePath=dataFilePath;
this.servingSpeedFactor=servingSpeedFactor;
rowNo=0;
}
@凌驾
公共void运行(SourceContext SourceContext)引发异常{
long-servingStartTime=Calendar.getInstance().getTimeInMillis();
inputStream=newDataInputStream(newFileInputStream(dataFilePath));
reader=新的BufferedReader(新的InputStreamReader(inputStream));
弦线;
启动时间长;
rowNo++;
if(reader.ready()&&(line=reader.readLine())!=null){
MyObject MyObject=MyObject.fromString(行);
if(febrlObject!=null)
collect(myObject);
}否则{
返回;
}
while(reader.ready()&&(line=reader.readLine())!=null){
MyObject MyObject=MyObject.fromString(行);
collect(febrlObject);
}
this.reader.close();
this.reader=null;
this.inputStream.close();
this.inputStream=null;
}
@凌驾
公开作废取消(){
试一试{
如果(this.reader!=null){
this.reader.close();
}
if(this.inputStream!=null){
this.inputStream.close();
}
}捕获(ioe异常ioe){
//
}最后{
this.reader=null;
this.inputStream=null;
}
}
}

您尝试使用Java的常规
文件输入流访问HDFS中的文件<代码>FileInputStream只能访问本地文件系统。它不知道与HDFS对话的任何内容。您需要使用HDFS客户端从HDFS读取文件。请参见Flink的
FileInputFormat`作为示例

但是,如果可能的话,我会尽量避免自己实现这一点。您可以尝试使用Flink的
FileInputFormat
逐行读取文件(返回
DataStream
)和解析该行的连续(平面)映射器