java把程序结果写文件_java—通过ApacheFlink将SQL query的结果写入文件

我有以下任务:

用SQL请求创建 job配置单元表;

注意

因为需要在远程Flink集群上运行这个 job,我不能简单地使用TableEnvironment。这张罚单上提到了这个问题:https://issues.apache.org/jira/browse/FLINK-18095。对于当前的解决方案,我使用http://apache-flink-user-mail-list-archive.2336050.n4.nabble.com/Table-Environment-for-Remote-Execution-td35691.html。

代码

EnvironmentSettings batchSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inBatchMode().build();

// create remote env

StreamExecutionEnvironment streamExecutionEnvironment = StreamExecutionEnvironment.createRemoteEnvironment("localhost", 8081, "/path/to/my/jar");

// create StreamTableEnvironment

TableConfig tableConfig = new TableConfig();

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

CatalogManager catalogManager = CatalogManager.newBuilder()

.classLoader(classLoader)

.config(tableConfig.getConfiguration())

.defaultCatalog(

batchSettings.getBuiltInCatalogName(),

new GenericInMemoryCatalog(

batchSettings.getBuiltInCatalogName(),

batchSettings.getBuiltInDatabaseName()))

.executionConfig(

streamExecutionEnvironment.getConfig())

.build();

ModuleManager moduleManager = new ModuleManager();

BatchExecutor batchExecutor = new BatchExecutor(streamExecutionEnvironment);

FunctionCatalog functionCatalog = new FunctionCatalog(tableConfig, catalogManager, moduleManager);

StreamTableEnvironmentImpl tableEnv = new StreamTableEnvironmentImpl(

catalogManager,

moduleManager,

functionCatalog,

tableConfig,

streamExecutionEnvironment,

new BatchPlanner(batchExecutor, tableConfig, functionCatalog, catalogManager),

batchExecutor,

false);

// configure HiveCatalog

String name = "myhive";

String defaultDatabase = "default";

String hiveConfDir = "/path/to/hive/conf"; // a local path

HiveCatalog hive = new HiveCatalog(name, defaultDatabase, hiveConfDir);

tableEnv.registerCatalog("myhive", hive);

tableEnv.useCatalog("myhive");

// request to Hive

Table table = tableEnv.sqlQuery("select * from myhive.`default`.test");

问题

在这一步我可以 调用表.执行()方法,然后通过collect()方法获取CloseableIterator。但在我的例子中,我可以得到大量的行作为我的请求的结果,这将是完美的收集到文件(在 HDFSS中的ORC)。

我怎样才能达到我的目标?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值