ApacheFlink:如何从Cassandra读取数据流/数据集?
我试图利用以下链接中提供的信息,将卡桑德拉视为Flink中的数据源:ApacheFlink:如何从Cassandra读取数据流/数据集?,cassandra,apache-flink,Cassandra,Apache Flink,我试图利用以下链接中提供的信息,将卡桑德拉视为Flink中的数据源: 我在运行任务时遇到了AsyncWaitOperator异常。根据第一个链接,此异常是由于网络问题而发生的。然而,奇怪的是,我在本地VM上运行Cassandra,目标表中只有10行数据 @Jicaar在第一个链接中还提到,从RichAsyncFunction切换到RichMapFunction可以避免AsyncWaitOperator异常,有类似经验的人可以在RichMapFunction中分享如何操作吗 AsyncWa
AsyncWaitOperator
异常。根据第一个链接,此异常是由于网络问题而发生的。然而,奇怪的是,我在本地VM上运行Cassandra,目标表中只有10行数据
@Jicaar在第一个链接中还提到,从RichAsyncFunction
切换到RichMapFunction
可以避免AsyncWaitOperator
异常,有类似经验的人可以在RichMapFunction
中分享如何操作吗
AsyncWaitOperator
异常跟踪-->
下面的代码应该适用于从Cassandra读取Flink中的批处理
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
ClusterBuilder clusterBuilder = new ClusterBuilder() {
@Override
public Cluster buildCluster(Cluster.Builder builder) {
return builder.addContactPoint(<cassandraHost>))
.withPort(9042)
.withCredentials(<cassandraUserName>,<cassandraPassword>)
.build();
}
};
DataSet<Tuple3<String,String,String>> inputRecords = env
.createInput
(new CassandraInputFormat<Tuple3<String,String,String>>(<select query>,clusterBuilder)
,TupleTypeInfo.of(new TypeHint<Tuple3<String,String,String>>() {}));
final ExecutionEnvironment env=ExecutionEnvironment.getExecutionEnvironment();
ClusterBuilder ClusterBuilder=新的ClusterBuilder(){
@凌驾
公共群集构建群集(Cluster.Builder){
返回builder.addContactPoint())
.带端口(9042)
.具有证书(,)
.build();
}
};
数据集inputRecords=env
.createInput
(新的CassandraInputFormat(,clusterBuilder)
,TupleTypeInfo.of(newTypeHint(){});
数据集的数据类型(示例中由三个字符串组成的Tuple3)将根据select查询返回的字段的类型和数量而有所不同 我同意这个答案@JamesYu,使用Cassandra作为源代码是您希望使用数据集功能实现的。卡桑德拉是一个表格,不像卡夫卡那样是一个可流化的来源。AsyncWaitOperator用于根据从流接收的数据查询数据表。因此,不能将其用作创建数据源的方法。
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
ClusterBuilder clusterBuilder = new ClusterBuilder() {
@Override
public Cluster buildCluster(Cluster.Builder builder) {
return builder.addContactPoint(<cassandraHost>))
.withPort(9042)
.withCredentials(<cassandraUserName>,<cassandraPassword>)
.build();
}
};
DataSet<Tuple3<String,String,String>> inputRecords = env
.createInput
(new CassandraInputFormat<Tuple3<String,String,String>>(<select query>,clusterBuilder)
,TupleTypeInfo.of(new TypeHint<Tuple3<String,String,String>>() {}));