• 沒有找到結果。

2.10 使用 Spark 作业跨源访问数据源

2.10.2 对接 CSS

2.10.2.4 java 样例代码

<artifactId>spark-sql_2.11</artifactId>

<version>2.3.2</version>

</dependency>

import相关依赖包

import org.apache.spark.sql.SparkSession;

2) 创建会话

SparkSession sparkSession = SparkSession.builder().appName("datasource-css").getOrCreate();

– 通过SQL API访问

i. 创建DLI跨源访问 CSS关联表。

sparkSession.sql("create table css_table(id long, name string) using css options( 'es.nodes'

= '192.168.9.213:9200', 'es.nodes.wan.only' = 'true','resource' ='/mytest')");

ii. 插入数据。

sparkSession.sql("insert into css_table values(18, 'John'),(28, 'Bob')");

iii. 查询数据。

sparkSession.sql("select * from css_table").show();

iv. 删除数据表。

sparkSession.sql("drop table css_table");

– 提交Spark作业

i. 将写好的代码文件生成jar包,上传至DLI中。控制台操作请参考《数据湖 探索用户指南》。API操作请参考《数据湖探索API参考》>《上传资源 包》。

ii. 在Spark作业编辑器中选择对应的Module模块并执行Spark作业。控制台

<artifactId>spark-sql_2.11</artifactId>

<version>2.3.2</version>

</dependency>

– 通过SQL API 访问

import org.apache.spark.sql.*;

public class java_css_unsecurity { public static void main(String[] args) {

SparkSession sparkSession = SparkSession.builder().appName("datasource-css-unsecurity").getOrCreate();

// Create a DLI data table for DLI-associated CSS

sparkSession.sql("create table css_table(id long, name string) using css options( 'es.nodes'

= '192.168.15.34:9200', 'es.nodes.wan.only' = 'true', 'resource' = '/mytest')");

//*****************************SQL model***********************************

// Insert data into the DLI data table

sparkSession.sql("insert into css_table values(18, 'John'),(28, 'Bob')");

// Read data from DLI data table

sparkSession.sql("select * from css_table").show();

// drop table

sparkSession.sql("drop table css_table");

sparkSession.close();

<artifactId>spark-sql_2.11</artifactId>

SparkSession sparkSession = SparkSession.builder().appName("datasource-css").getOrCreate();

– 通过SQL API 访问

i. 创建DLI跨源访问 CSS的关联表。

sparkSession.sql("create table css_table(id long, name string) using css options( 'es.nodes'

= '192.168.9.213:9200', 'es.nodes.wan.only' = 'true', 'resource' = '/

mytest','es.net.ssl'='false','es.net.http.auth.user'='admin','es.net.http.auth.pass'='*******')");

sparkSession.sql("insert into css_table values(18, 'John'),(28, 'Bob')");

iii. 查询数据

sparkSession.sql("select * from css_table").show();

iv. 删除数据表

sparkSession.sql("drop table css_table");

– 提交Spark作业

<artifactId>spark-sql_2.11</artifactId>

<version>2.3.2</version>

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-sql_2.11</artifactId>

<version>2.3.2</version>

</dependency>

import相关依赖包:

import org.apache.spark.sql.SparkSession;

ii. 创建会话。

SparkSession sparkSession = SparkSession.builder().appName("datasource-css").getOrCreate();

– 通过SQL API 访问

i. 创建DLI跨源访问 CSS的关联表。

sparkSession.sql("create table css_table(id long, name string) using css options( 'es.nodes'

= '192.168.13.189:9200', 'es.nodes.wan.only' = 'true', 'resource' = '/

mytest','es.net.ssl'='true','es.net.ssl.keystore.location' = 'obs://桶名/地址/transport-keystore.jks','es.net.ssl.keystore.pass' = '**',

'es.net.ssl.truststore.location'='obs://桶名/地址/truststore.jks',

'es.net.ssl.truststore.pass'='***','es.net.http.auth.user'='admin','es.net.http.auth.pass'='**')");

说明

创建CSS跨源表的参数详情可参考表2-21。

ii. 插入数据

sparkSession.sql("insert into css_table values(18, 'John'),(28, 'Bob')");

iii. 查询数据

sparkSession.sql("select * from css_table").show();

iv. 删除数据表

sparkSession.sql("drop table css_table");

– 提交Spark作业

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and limitations under the License. See accompanying LICENSE file.

-->

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

<name>fs.obs.bucket.桶名.access.key</name>

<value>AK</value>

</property>

<property>

<name>fs.obs.bucket.桶名.secret.key </name>

<value>SK</value>

</property>

</configuration>

说明

<name>fs.obs.bucket.桶名.access.key</name>是为了更好的定位桶地址,该桶 名为存放keystore.jks和truststore.jks文件的桶名。

2-37 创建 Spark 作业

iii. 在Spark作业编辑器中选择对应的Module模块并执行Spark作业。控制台 操作请参考《数据湖探索用户指南》。API操作请参考《数据湖探索API 参考》>《创建批处理作业》。

说明

● 提交作业时,需要指定Module模块,名称为:sys.datasource.css。

● 通过控制台提交作业请参考《数据湖探索用户指南》中的“表6-选择依赖资 源参数说明”。

● 通过API提交作业请参考《数据湖探索API参考》>《创建批处理作业》中

“表2-请求参数说明”关于“modules”参数的说明。

– 完整示例代码

Maven依赖

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-sql_2.11</artifactId>

<version>2.3.2</version>

</dependency>

通过SQL API 访问

import org.apache.spark.sql.SparkSession;

public class java_css_security_httpson { public static void main(String[] args) {

SparkSession sparkSession = SparkSession.builder().appName("datasource-css").getOrCreate();

// Create a DLI data table for DLI-associated CSS

sparkSession.sql("create table css_table(id long, name string) using css options( 'es.nodes' = '192.168.13.189:9200', 'es.nodes.wan.only' = 'true', 'resource' = '/

mytest','es.net.ssl'='true','es.net.ssl.keystore.location' = 'obs://桶名/地址/transport-keystore.jks','es.net.ssl.keystore.pass' = '**','es.net.ssl.truststore.location'='obs://桶名/地址/

truststore.jks','es.net.ssl.truststore.pass'='**','es.net.http.auth.user'='admin','es.net.http.auth.p ass'='**')");

//*****************************SQL model***********************************

// Insert data into the DLI data table

sparkSession.sql("insert into css_table values(34, 'Yuan'),(28, 'Kids')");

// Read data from DLI data table

sparkSession.sql("select * from css_table").show();

// drop table

sparkSession.sql("drop table css_table");

sparkSession.close();

} }