Java Code Examples for org.apache.flink.table.api.java.StreamTableEnvironment#registerDataStream()
The following examples show how to use
org.apache.flink.table.api.java.StreamTableEnvironment#registerDataStream() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: JavaSqlITCase.java From Flink-CEPplus with Apache License 2.0 | 6 votes |
@Test public void testFilter() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); StreamITCase.clear(); DataStream<Tuple5<Integer, Long, Integer, String, Long>> ds = JavaStreamTestData.get5TupleDataStream(env); tableEnv.registerDataStream("MyTable", ds, "a, b, c, d, e"); String sqlQuery = "SELECT a, b, e FROM MyTable WHERE c < 4"; Table result = tableEnv.sqlQuery(sqlQuery); DataStream<Row> resultSet = tableEnv.toAppendStream(result, Row.class); resultSet.addSink(new StreamITCase.StringSink<Row>()); env.execute(); List<String> expected = new ArrayList<>(); expected.add("1,1,1"); expected.add("2,2,2"); expected.add("2,3,1"); expected.add("3,4,2"); StreamITCase.compareWithList(expected); }
Example 2
Source File: StreamSQLExample.java From flink-learning with Apache License 2.0 | 6 votes |
public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); DataStream<Order> orderA = env.fromCollection(Arrays.asList( new Order(1L, "beer", 3), new Order(1L, "diaper", 4), new Order(3L, "rubber", 2))); DataStream<Order> orderB = env.fromCollection(Arrays.asList( new Order(2L, "pen", 3), new Order(2L, "rubber", 3), new Order(4L, "beer", 1))); Table tableA = tEnv.fromDataStream(orderA, "user, product, amount"); tEnv.registerDataStream("OrderB", orderB, "user, product, amount"); Table result = tEnv.sqlQuery("SELECT * FROM " + tableA + " WHERE amount > 2 UNION ALL " + "SELECT * FROM OrderB WHERE amount < 2"); tEnv.toAppendStream(result, Order.class).print(); env.execute(); }
Example 3
Source File: JavaSqlITCase.java From flink with Apache License 2.0 | 6 votes |
@Test public void testFilter() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); StreamITCase.clear(); DataStream<Tuple5<Integer, Long, Integer, String, Long>> ds = JavaStreamTestData.get5TupleDataStream(env); tableEnv.registerDataStream("MyTable", ds, "a, b, c, d, e"); String sqlQuery = "SELECT a, b, e FROM MyTable WHERE c < 4"; Table result = tableEnv.sqlQuery(sqlQuery); DataStream<Row> resultSet = tableEnv.toAppendStream(result, Row.class); resultSet.addSink(new StreamITCase.StringSink<Row>()); env.execute(); List<String> expected = new ArrayList<>(); expected.add("1,1,1"); expected.add("2,2,2"); expected.add("2,3,1"); expected.add("3,4,2"); StreamITCase.compareWithList(expected); }
Example 4
Source File: StreamSQLExample.java From flink-learning with Apache License 2.0 | 6 votes |
public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); DataStream<Order> orderA = env.fromCollection(Arrays.asList( new Order(1L, "beer", 3), new Order(1L, "diaper", 4), new Order(3L, "rubber", 2))); DataStream<Order> orderB = env.fromCollection(Arrays.asList( new Order(2L, "pen", 3), new Order(2L, "rubber", 3), new Order(4L, "beer", 1))); Table tableA = tEnv.fromDataStream(orderA, "user, product, amount"); tEnv.registerDataStream("OrderB", orderB, "user, product, amount"); Table result = tEnv.sqlQuery("SELECT * FROM " + tableA + " WHERE amount > 2 UNION ALL " + "SELECT * FROM OrderB WHERE amount < 2"); tEnv.toAppendStream(result, Order.class).print(); env.execute(); }
Example 5
Source File: JavaSqlITCase.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
@Test public void testUnion() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); StreamITCase.clear(); DataStream<Tuple3<Integer, Long, String>> ds1 = JavaStreamTestData.getSmall3TupleDataSet(env); Table t1 = tableEnv.fromDataStream(ds1, "a,b,c"); tableEnv.registerTable("T1", t1); DataStream<Tuple5<Integer, Long, Integer, String, Long>> ds2 = JavaStreamTestData.get5TupleDataStream(env); tableEnv.registerDataStream("T2", ds2, "a, b, d, c, e"); String sqlQuery = "SELECT * FROM T1 " + "UNION ALL " + "(SELECT a, b, c FROM T2 WHERE a < 3)"; Table result = tableEnv.sqlQuery(sqlQuery); DataStream<Row> resultSet = tableEnv.toAppendStream(result, Row.class); resultSet.addSink(new StreamITCase.StringSink<Row>()); env.execute(); List<String> expected = new ArrayList<>(); expected.add("1,1,Hi"); expected.add("2,2,Hello"); expected.add("3,2,Hello world"); expected.add("1,1,Hallo"); expected.add("2,2,Hallo Welt"); expected.add("2,3,Hallo Welt wie"); StreamITCase.compareWithList(expected); }
Example 6
Source File: StreamSQLExample.java From Flink-CEPplus with Apache License 2.0 | 5 votes |
public static void main(String[] args) throws Exception { // set up execution environment StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); DataStream<Order> orderA = env.fromCollection(Arrays.asList( new Order(1L, "beer", 3), new Order(1L, "diaper", 4), new Order(3L, "rubber", 2))); DataStream<Order> orderB = env.fromCollection(Arrays.asList( new Order(2L, "pen", 3), new Order(2L, "rubber", 3), new Order(4L, "beer", 1))); // convert DataStream to Table Table tableA = tEnv.fromDataStream(orderA, "user, product, amount"); // register DataStream as Table tEnv.registerDataStream("OrderB", orderB, "user, product, amount"); // union the two tables Table result = tEnv.sqlQuery("SELECT * FROM " + tableA + " WHERE amount > 2 UNION ALL " + "SELECT * FROM OrderB WHERE amount < 2"); tEnv.toAppendStream(result, Order.class).print(); env.execute(); }
Example 7
Source File: StreamSQLExample.java From flink-simple-tutorial with Apache License 2.0 | 5 votes |
public static void main(String[] args) throws Exception { // 获取 environment StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); DataStream<Order> orderA = env.fromCollection(Arrays.asList( new Order(1L, "beer", 3), new Order(1L, "diaper", 4), new Order(3L, "rubber", 2))); DataStream<Order> orderB = env.fromCollection(Arrays.asList( new Order(2L, "pen", 3), new Order(2L, "rubber", 3), new Order(4L, "beer", 1))); // 将 DataStream 转换为 Table Table tableA = tEnv.fromDataStream(orderA, "user, product, amount"); // 将 DataStream 注册成 Table tEnv.registerDataStream("OrderB", orderB, "user, product, amount"); // union 两个 table Table result = tEnv.sqlQuery("SELECT * FROM " + tableA + " WHERE amount > 2 UNION ALL " + "SELECT * FROM OrderB WHERE amount > 2"); tEnv.toAppendStream(result, Order.class).print(); env.execute(); }
Example 8
Source File: CassandraConnectorITCase.java From flink with Apache License 2.0 | 5 votes |
@Test public void testCassandraTableSink() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); DataStreamSource<Row> source = env.fromCollection(rowCollection); tEnv.registerDataStream("testFlinkTable", source); tEnv.registerTableSink( "cassandraTable", new CassandraAppendTableSink(builder, injectTableName(INSERT_DATA_QUERY)).configure( new String[]{"f0", "f1", "f2"}, new TypeInformation[]{Types.STRING, Types.INT, Types.INT} )); tEnv.sqlQuery("select * from testFlinkTable").insertInto("cassandraTable"); env.execute(); ResultSet rs = session.execute(injectTableName(SELECT_DATA_QUERY)); // validate that all input was correctly written to Cassandra List<Row> input = new ArrayList<>(rowCollection); List<com.datastax.driver.core.Row> output = rs.all(); for (com.datastax.driver.core.Row o : output) { Row cmp = new Row(3); cmp.setField(0, o.getString(0)); cmp.setField(1, o.getInt(2)); cmp.setField(2, o.getInt(1)); Assert.assertTrue("Row " + cmp + " was written to Cassandra but not in input.", input.remove(cmp)); } Assert.assertTrue("The input data was not completely written to Cassandra", input.isEmpty()); }
Example 9
Source File: JavaSqlITCase.java From flink with Apache License 2.0 | 5 votes |
@Test public void testUnion() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); StreamITCase.clear(); DataStream<Tuple3<Integer, Long, String>> ds1 = JavaStreamTestData.getSmall3TupleDataSet(env); Table t1 = tableEnv.fromDataStream(ds1, "a,b,c"); tableEnv.registerTable("T1", t1); DataStream<Tuple5<Integer, Long, Integer, String, Long>> ds2 = JavaStreamTestData.get5TupleDataStream(env); tableEnv.registerDataStream("T2", ds2, "a, b, d, c, e"); String sqlQuery = "SELECT * FROM T1 " + "UNION ALL " + "(SELECT a, b, c FROM T2 WHERE a < 3)"; Table result = tableEnv.sqlQuery(sqlQuery); DataStream<Row> resultSet = tableEnv.toAppendStream(result, Row.class); resultSet.addSink(new StreamITCase.StringSink<Row>()); env.execute(); List<String> expected = new ArrayList<>(); expected.add("1,1,Hi"); expected.add("2,2,Hello"); expected.add("3,2,Hello world"); expected.add("1,1,Hallo"); expected.add("2,2,Hallo Welt"); expected.add("2,3,Hallo Welt wie"); StreamITCase.compareWithList(expected); }
Example 10
Source File: StreamSQLExample.java From flink with Apache License 2.0 | 5 votes |
public static void main(String[] args) throws Exception { // set up execution environment StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(env); DataStream<Order> orderA = env.fromCollection(Arrays.asList( new Order(1L, "beer", 3), new Order(1L, "diaper", 4), new Order(3L, "rubber", 2))); DataStream<Order> orderB = env.fromCollection(Arrays.asList( new Order(2L, "pen", 3), new Order(2L, "rubber", 3), new Order(4L, "beer", 1))); // convert DataStream to Table Table tableA = tEnv.fromDataStream(orderA, "user, product, amount"); // register DataStream as Table tEnv.registerDataStream("OrderB", orderB, "user, product, amount"); // union the two tables Table result = tEnv.sqlQuery("SELECT * FROM " + tableA + " WHERE amount > 2 UNION ALL " + "SELECT * FROM OrderB WHERE amount < 2"); tEnv.toAppendStream(result, Order.class).print(); env.execute(); }
Example 11
Source File: RedisDescriptorTest.java From bahir-flink with Apache License 2.0 | 5 votes |
@Test public void testRedisDescriptor() throws Exception { DataStreamSource<Row> source = (DataStreamSource<Row>) env.addSource(new TestSourceFunctionString()) .returns(new RowTypeInfo(TypeInformation.of(String.class), TypeInformation.of(Long.class))); EnvironmentSettings settings = EnvironmentSettings .newInstance() .useOldPlanner() .inStreamingMode() .build(); StreamTableEnvironment tableEnvironment = StreamTableEnvironment.create(env, settings); tableEnvironment.registerDataStream("t1", source, "k, v"); Redis redis = new Redis() .mode(RedisValidator.REDIS_CLUSTER) .command(RedisCommand.INCRBY_EX.name()) .ttl(100000) .property(RedisValidator.REDIS_NODES, REDIS_HOST+ ":" + REDIS_PORT); tableEnvironment .connect(redis).withSchema(new Schema() .field("k", TypeInformation.of(String.class)) .field("v", TypeInformation.of(Long.class))) .registerTableSink("redis"); tableEnvironment.sqlUpdate("insert into redis select k, v from t1"); env.execute("Test Redis Table"); }
Example 12
Source File: HBaseConnectorITCase.java From flink with Apache License 2.0 | 4 votes |
@Test public void testTableSink() throws Exception { HBaseTableSchema schema = new HBaseTableSchema(); schema.addColumn(FAMILY1, F1COL1, Integer.class); schema.addColumn(FAMILY2, F2COL1, String.class); schema.addColumn(FAMILY2, F2COL2, Long.class); schema.setRowKey("rk", Integer.class); schema.addColumn(FAMILY3, F3COL1, Double.class); schema.addColumn(FAMILY3, F3COL2, Boolean.class); schema.addColumn(FAMILY3, F3COL3, String.class); Map<String, String> tableProperties = new HashMap<>(); tableProperties.put("connector.type", "hbase"); tableProperties.put("connector.version", "1.4.3"); tableProperties.put("connector.property-version", "1"); tableProperties.put("connector.table-name", TEST_TABLE_2); tableProperties.put("connector.zookeeper.quorum", getZookeeperQuorum()); tableProperties.put("connector.zookeeper.znode.parent", "/hbase"); DescriptorProperties descriptorProperties = new DescriptorProperties(true); descriptorProperties.putTableSchema(SCHEMA, schema.convertsToTableSchema()); descriptorProperties.putProperties(tableProperties); TableSink tableSink = TableFactoryService .find(HBaseTableFactory.class, descriptorProperties.asMap()) .createTableSink(descriptorProperties.asMap()); StreamExecutionEnvironment execEnv = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment tEnv = StreamTableEnvironment.create(execEnv, streamSettings); DataStream<Row> ds = execEnv.fromCollection(testData1).returns(testTypeInfo1); tEnv.registerDataStream("src", ds); tEnv.registerTableSink("hbase", tableSink); String query = "INSERT INTO hbase SELECT ROW(f1c1), ROW(f2c1, f2c2), rowkey, ROW(f3c1, f3c2, f3c3) FROM src"; tEnv.sqlUpdate(query); // wait to finish tEnv.execute("HBase Job"); // start a batch scan job to verify contents in HBase table // start a batch scan job to verify contents in HBase table TableEnvironment batchTableEnv = createBatchTableEnv(); HBaseTableSource hbaseTable = new HBaseTableSource(getConf(), TEST_TABLE_2); hbaseTable.setRowKey("rowkey", Integer.class); hbaseTable.addColumn(FAMILY1, F1COL1, Integer.class); hbaseTable.addColumn(FAMILY2, F2COL1, String.class); hbaseTable.addColumn(FAMILY2, F2COL2, Long.class); hbaseTable.addColumn(FAMILY3, F3COL1, Double.class); hbaseTable.addColumn(FAMILY3, F3COL2, Boolean.class); hbaseTable.addColumn(FAMILY3, F3COL3, String.class); batchTableEnv.registerTableSource("hTable", hbaseTable); Table table = batchTableEnv.sqlQuery( "SELECT " + " h.rowkey, " + " h.family1.col1, " + " h.family2.col1, " + " h.family2.col2, " + " h.family3.col1, " + " h.family3.col2, " + " h.family3.col3 " + "FROM hTable AS h" ); List<Row> results = collectBatchResult(table); String expected = "1,10,Hello-1,100,1.01,false,Welt-1\n" + "2,20,Hello-2,200,2.02,true,Welt-2\n" + "3,30,Hello-3,300,3.03,false,Welt-3\n" + "4,40,,400,4.04,true,Welt-4\n" + "5,50,Hello-5,500,5.05,false,Welt-5\n" + "6,60,Hello-6,600,6.06,true,Welt-6\n" + "7,70,Hello-7,700,7.07,false,Welt-7\n" + "8,80,,800,8.08,true,Welt-8\n"; TestBaseUtils.compareResultAsText(results, expected); }
Example 13
Source File: AbstractFlinkClient.java From alchemy with Apache License 2.0 | 4 votes |
private Table registerSql(StreamTableEnvironment env, String sql, Map<String, TableSource> tableSources, Map<String, SourceDescriptor> sideSources) throws Exception { if (sideSources.isEmpty()) { return env.sqlQuery(sql); } Deque<SqlNode> deque = SideParser.parse(sql); SqlNode last; SqlSelect modifyNode = null; SqlNode fullNode = deque.peekFirst(); while ((last = deque.pollLast()) != null) { if (modifyNode != null) { SideParser.rewrite(last, modifyNode); modifyNode = null; } if (last.getKind() == SqlKind.SELECT) { SqlSelect sqlSelect = (SqlSelect) last; SqlNode selectFrom = sqlSelect.getFrom(); if (SqlKind.JOIN != selectFrom.getKind()) { continue; } SqlJoin sqlJoin = (SqlJoin) selectFrom; Alias sideAlias = SideParser.getTableName(sqlJoin.getRight()); Alias leftAlias = SideParser.getTableName(sqlJoin.getLeft()); if (isSide(sideSources.keySet(), leftAlias.getTable())) { throw new UnsupportedOperationException("side table must be right table"); } if (!isSide(sideSources.keySet(), sideAlias.getTable())) { continue; } DataStream<Row> dataStream = SideStream.buildStream(env, sqlSelect, leftAlias, sideAlias, sideSources.get(sideAlias.getTable())); Alias newTable = new Alias(leftAlias.getTable() + "_" + sideAlias.getTable(), leftAlias.getAlias() + "_" + sideAlias.getAlias()); if (!env.isRegistered(newTable.getTable())) { env.registerDataStream(newTable.getTable(), dataStream); } SqlSelect newSelect = SideParser.newSelect(sqlSelect, newTable.getTable(), newTable.getAlias(), false, true); modifyNode = newSelect; } } if (modifyNode != null) { return env.sqlQuery(modifyNode.toString()); } else { return env.sqlQuery(fullNode.toString()); } }
Example 14
Source File: AreasTotalPerHourOfDay.java From infoworld-post with Apache License 2.0 | 4 votes |
public static void main(String[] args) throws Exception { // check parameter if (args.length != 1) { System.err.println("Please provide the path to the taxi rides file as a parameter"); } String inputPath = args[0]; // create execution environment StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // configure event-time and watermarks env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); env.getConfig().setAutoWatermarkInterval(1000L); // create table environment StreamTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env); // register user-defined function tEnv.registerFunction("toCellId", new GeoUtils.ToCellId()); // get taxi ride event stream DataStream<TaxiRide> rides = TaxiRides.getRides(env, inputPath); // register taxi ride event stream as table "Rides" tEnv.registerDataStream( "Rides", rides, "medallion, licenseId, pickUpTime, dropOffTime.rowtime, " + "pickUpLon, pickUpLat, dropOffLon, dropOffLat, total"); // define SQL query to compute average total per area and hour of day. Table result = tEnv.sqlQuery( "SELECT " + " toCellId(dropOffLon, dropOffLat) AS area, " + " EXTRACT(HOUR FROM dropOffTime) AS hourOfDay, " + " AVG(total) AS avgTotal " + "FROM Rides " + "GROUP BY " + " toCellId(dropOffLon, dropOffLat), " + " EXTRACT(HOUR FROM dropOffTime)" ); // convert result table into a retraction stream and print it tEnv.toRetractStream(result, Row.class) .print(); // execute the query env.execute(); }
Example 15
Source File: AreasTotalPerHour.java From infoworld-post with Apache License 2.0 | 4 votes |
public static void main(String[] args) throws Exception { // check parameter if (args.length != 1) { System.err.println("Please provide the path to the taxi rides file as a parameter"); } String inputPath = args[0]; // create execution environment StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // configure event-time and watermarks env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); env.getConfig().setAutoWatermarkInterval(1000L); // create table environment StreamTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env); // register user-defined function tEnv.registerFunction("toCellId", new GeoUtils.ToCellId()); // get taxi ride event stream DataStream<TaxiRide> rides = TaxiRides.getRides(env, inputPath); // register taxi ride event stream as table "Rides" tEnv.registerDataStream( "Rides", rides, "medallion, licenseId, pickUpTime, dropOffTime.rowtime, " + "pickUpLon, pickUpLat, dropOffLon, dropOffLat, total"); // define SQL query to compute average total per area and hour Table result = tEnv.sqlQuery( "SELECT " + " toCellId(dropOffLon, dropOffLat) AS area, " + " TUMBLE_START(dropOffTime, INTERVAL '1' HOUR) AS t, " + " AVG(total) AS avgTotal " + "FROM Rides " + "GROUP BY " + " toCellId(dropOffLon, dropOffLat), " + " TUMBLE(dropOffTime, INTERVAL '1' HOUR)" ); // convert result table into an append stream and print it tEnv.toAppendStream(result, Row.class) .print(); // execute the query env.execute(); }