探索如何从apache flink写入HDFS,我尝试了以下操作:
val sink: StreamingFileSink[String] = StreamingFileSink
.forRowFormat(new Path("hdfs://localhost:50070/mydata"), new SimpleStringEncoder[String]("UTF-8"))
.withRollingPolicy(
DefaultRollingPolicy.builder()
.withRolloverInterval(Duration.ofMinutes(15))
.withInactivityInterval(Duration.ofMinutes(5))
.withMaxPartSize(1024 * 1024 * 1024)
.build())
.build()
我在本地运行了一个类似于docker-compose.yaml的Hive集群。
但是对于org.apache.hadoop.ipc.RpcException: RPC response exceeds maximum data length
,写入完全失败我验证了端口是正确的,并在hadoop-hive.env
中添加了以下内容(见这里):
HIVE_SITE_CONF_ipc_maximum_data_length=134217728
这是通过环境变量定义增加数据长度的正确方法吗?或者问题出在别的地方?
查看namenode使用的env文件
如果你有这一行,那么这就是namenode地址你应该使用
CORE_CONF_fs_defaultFS=hdfs://namenode:8020
如果从主机运行代码,您可能会遇到类似的网络问题,因为客户机需要能够直接连接到数据节点,而这是不容易做到的。唯一合理的解决方法是在同一个Docker网络的容器中运行代码