云服务器内容精选

  • 访问开源 ZooKeeper 使用“testConnectApacheZk”连接开源ZooKeeper的代码,只需要将以下代码中的“xxx.xxx.xxx.xxx”修改为需要连接的开源的ZooKeeper的IP,端口号按照实际情况修改。如果仅需运行访问第三方Zookeeper的样例,需注释掉main函数中的“testConnectHive”方法。 digestZK = new org.apache.zookeeper.ZooKeeper("xxx.xxx.xxx.xxx:端口号", 60000, null); ZooKeeper连接使用完后需要关闭连接,否则可能导致连接泄露。可根据业务实际情况进行处理,代码如下: //使用try-with-resources方式,try语句执行完后会自动关闭ZooKeeper连接。 try (org.apache.zookeeper.ZooKeeper digestZk = new org.apache.zookeeper.ZooKeeper("xxx.xxx.xxx.xxx:端口号", 600000, null)) { ... }
  • 代码样例 取消冷热时间线。 public void testModifyTable() { LOG.info("Entering testModifyTable."); // Specify the column family name. byte[] familyName = Bytes.toBytes("info"); Admin admin = null; try { // Instantiate an Admin object. admin = conn.getAdmin(); // Obtain the table descriptor. HTableDescriptor htd = admin.getTableDescriptor(tableName); // Check whether the column family is specified before modification. if (!htd.hasFamily(familyName)) { // Create the column descriptor. HColumnDescriptor hcd = new HColumnDescriptor(familyName); //Disable hot and cold separation. hcd .setValue(HColumnDescriptor.COLD_BOUNDARY, null); htd.addFamily(hcd); // Disable the table to get the table offline before modifying // the table. admin.disableTable(tableName); // Submit a modifyTable request. admin.modifyTable(tableName, htd); //注[1] // Enable the table to get the table online after modifying the // table. admin.enableTable(tableName); } LOG.info("Modify table successfully."); } catch (IOException e) { LOG.error("Modify table failed " ,e); } finally { if (admin != null) { try { // Close the Admin object. admin.close(); } catch (IOException e) { LOG.error("Close admin failed " ,e); } } } LOG.info("Exiting testModifyTable."); } 注意事项。 注[1] 只有在调用disableTable接口后, 再调用modifyTable接口才能将表修改成功。之后,请调用enableTable接口重新启用表。 注[1] 指的是代码样例中的“admin.modifyTable(tableName, htd); //注[1]”。
  • 前提条件 配置用户的集群信息和登录账号信息: 配置文件:“样例工程文件夹\conf\UserInfo.properties”。 参数说明: userName:登录Manager系统的用户名。 password:userName对应的用户密码。密码明文存储存在安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 webUrl:Manager首页地址。 填写“UserInfo.properties”文件中的参数,注意填写的准确性,可以仿照以下参数示例进行填写,其中,“IP_Address”填写FusionInsight Manager对应的浮动IP地址。 如果需要使用其他用户进行操作,请先登录FusionInsight Manager创建用户。 userName= admin password= adminPassWord webUrl= https://IP_Address:28443/web/
  • 代码样例 以下代码片段是调用firstAccess接口完成登录认证的示例,在rest.UserManager类的main方法中。 BasicAuthAccess authAccess = new BasicAuthAccess(); HttpClient httpClient = authAccess.loginAndAccess(webUrl, userName, password, userTLSVersion); LOG.info("Start to access REST API."); HttpManager httpManager = new HttpManager(); String operationName = ""; String operationUrl = ""; String jsonFilePath = "";
  • 通过HSBroker方式访问Hive数据源 本章节适用于MRS 3.3.0及以后版本。 通过HSBroker方式连接到HetuEngine,组装对应的SQL发送到HetuEngine执行,完成对Hive数据源的增删改查操作。 import jaydebeapi driver = "io.XXX.jdbc.XXXDriver" # need to change the value based on the cluster information url = "jdbc:XXX://192.168.37.61:29861,192.168.37.62:29861/hive/default?serviceDiscoveryMode=hsbroker" user = "YourUserName" tenant = "YourTenant" jdbc_location = "Your file path of the jdbc jar" sql = "show catalogs" if __name__ == '__main__': conn = jaydebeapi.connect(driver, url, {"user": user, "SSL": "false", "tenant": tenant}, [jdbc_location]) curs = conn.cursor() curs.execute(sql) result = curs.fetchall() print(result) curs.close() conn.close() 上述代码中各参数说明如下表所示: 表1 参数及参数说明 参数名称 参数说明 url jdbc:XXX://HSBroker1_IP:HSBroker1_Port,HSBroker2_IP:HSBroker2_Port,HSBroker3_IP:HSBroker3_Port/catalog/schema?serviceDiscoveryMode=hsbroker 说明: XXX:驱动名,请以实际样例代码中的内容为准。 catalog、schema分别是JDBC客户端要连接的catalog和schema名称。 HSBroker_IP:HSBroker_Port是HSBroker的URL,多个URL以逗号隔开。例如:“192.168.81.37:2181,192.168.195.232:2181,192.168.169.84:2181” user 访问HetuServer的用户名,即在集群中创建的“人机”用户的用户名。 tenant 指定访问HetuEngine计算实例的租户资源队列。 jdbc_location 配置Python3样例工程中获取的hetu-jdbc-XXX.jar包的完整路径。 Windows系统路径示例:"D:\\hetu-examples-python3\\hetu-jdbc-XXX.jar" Linux系统路径示例:"/opt/hetu-examples-python3/hetu-jdbc-XXX.jar" 父主题: Python3样例代码
  • 前提条件 配置用户的集群信息和登录账号信息: 配置文件:“样例工程文件夹\conf\UserInfo.properties”。 参数说明: userName:登录Manager系统的用户名。 password:userName对应的用户密码。 webUrl:Manager首页地址。 填写“UserInfo.properties”文件中的参数,注意填写的准确性,可以仿照以下参数示例进行填写,其中,“IP_Address”填写FusionInsight Manager对应的浮动IP地址。 如果需要使用其他用户进行操作,请先登录FusionInsight Manager创建用户。 userName= admin password= adminPassWord webUrl= https://IP_Address:28443/web/
  • 代码样例 以下代码片段是调用firstAccess接口完成登录认证的示例,在“rest”包的“UserManager”类的main方法中。 BasicAuthAccess authAccess = new BasicAuthAccess(); HttpClient httpClient = authAccess.loginAndAccess(webUrl, userName, password, userTLSVersion); LOG.info("Start to access REST API."); HttpManager httpManager = new HttpManager(); String operationName = ""; String operationUrl = ""; String jsonFilePath = "";
  • 代码样例 通过SpringBoot实现Kafka生产消费的样例代码如下: @RestController public class MessageController { private final static Logger LOG = LoggerFactory.getLogger(MessageController.class); @Autowired private KafkaProperties kafkaProperties; @GetMapping("/produce") public String produce() { Producer producerThread = new Producer(); producerThread.init(this.kafkaProperties); producerThread.start(); String message = "Start to produce messages"; LOG.info(message); return message; } @GetMapping("/consume") public String consume() { Consumer consumerThread = new Consumer(); consumerThread.init(this.kafkaProperties); consumerThread.start(); LOG.info("Start to consume messages"); // 等到180s后将consumer关闭,实际执行过程中可修改 try { Thread.sleep(consumerThread.getThreadAliveTime()); } catch (InterruptedException e) { LOG.info("Occurred InterruptedException: ", e); } finally { consumerThread.close(); } return String.format("Finished consume messages"); } }
  • 代码样例 以下代码片段是添加用户的示例,在rest.UserManager类的main方法中。 密码明文存储存在安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 //访问Manager接口完成添加用户 operationName = "AddUser"; operationUrl = webUrl + ADD_USER_URL; jsonFilePath = "./conf/addUser.json"; httpManager.sendHttpPostRequest(httpClient, operationUrl, jsonFilePath, operationName)
  • 建立连接 以下代码片段在“ClickhouseJDBCHaDemo”类的initConnection方法中。在创建连接时传入表1中配置的user和password作为认证凭据,ClickHouse会带着用户名和密码在服务端进行安全认证。 MRS 3.3.0之前版本: clickHouseProperties.setPassword(userPass); clickHouseProperties.setUser(userName); BalancedClickhouseDataSource balancedClickhouseDataSource = new BalancedClickhouseDataSource(JDBC_PREFIX + UriList, clickHouseProperties); MRS 3.3.0及之后版本: clickHouseProperties.setProperty(ClickHouseDefaults.USER.getKey(), userName); clickHouseProperties.setProperty(ClickHouseDefaults.PASSWORD.getKey(), userPass); try { clickHouseProperties.setProperty(ClickHouseClientOption.FAILOVER.getKey(), "21"); clickHouseProperties.setProperty(ClickHouseClientOption.LOAD_BALANCING_POLICY.getKey(), "roundRobin"); balancedClickhouseDataSource = new ClickHouseDataSource(JDBC_PREFIX + UriList, clickHouseProperties); } catch (Exception e) { LOG.error("Failed to create balancedClickHouseProperties."); throw e; } 父主题: 样例代码说明
  • 代码样例 Properties clickHouseProperties = new Properties(); clickHouseProperties.setProperty(ClickHouseClientOption.CONNECTION_TIMEOUT.getKey(), Integer.toString(60000)); clickHouseProperties.setProperty(ClickHouseClientOption.SSL.getKey(), Boolean.toString(false)); clickHouseProperties.setProperty(ClickHouseClientOption.SSL_MODE.getKey(), "none");
  • 样例代码 -- 从本地文件系统/opt/hive_examples_data/目录下将employee_info.txt加载进employees_info表中.---- 用新数据覆盖原有数据 LOAD DATA LOCAL INPATH '/opt/hive_examples_data/employee_info.txt' OVERWRITE INTO TABLE employees_info; ---- 保留原有数据,将新数据追加到表中LOAD DATA LOCAL INPATH '/opt/hive_examples_data/employee_info.txt' INTO TABLE employees_info; -- 从HDFS上/user/hive_examples_data/employee_info.txt加载进employees_info表中. ---- 用新数据覆盖原有数据LOAD DATA INPATH '/user/hive_examples_data/employee_info.txt' OVERWRITE INTO TABLE employees_info; ---- 保留原有数据,将新数据追加到表中LOAD DATA INPATH '/user/hive_examples_data/employee_info.txt' INTO TABLE employees_info; 加载数据的实质是将数据拷贝到HDFS上指定表的目录下。
  • 功能介绍 本小节介绍了如何使用HQL向已有的表employees_info中加载数据。从本节中可以掌握如何从本地文件系统、MRS集群中加载数据。以关键字LOCAL区分数据源是否来自本地。 在启用了安全服务的集群中执行如下操作,需要在数据库中具有UPDATE权限及对加载数据文件具有owner权限和读写权限,详情请参见概述。 如果加载数据语句中有关键字LOCAL,表明从本地加载数据,除要求对相应表的UPDATE权限外,还要求该数据在当前连接的HiveServer节点上,加载用户对数据路径“PATH”具有读权限,且以omm用户能够访问该数据文件。 如果加载数据语句中有关键字OVERWRITE,表示加载的数据会覆盖表中原有的数据,否则加载的数据会追加到表中。
  • 发送短信 # -*- coding: utf-8 -*-import jsonimport requests # 需要先使用pip install requests命令安装依赖# 必填,请参考"开发准备"获取如下数据,替换为实际值url = 'https://ip:port/common/sms/sendTemplateMessage' # APP接入地址+接口访问URImsisdn = ['8612345678911'] #手机号码,多个手机号以,号分隔,例如:['8612345678911','8612345678912']smsTemplateId = "SMS_21060200001" # 模板IDtemplateParas = {"VarName": "VarValue"} # 1、当发送短信使用的是无变量的模板时,请删除本行代码。2、当发送短信使用的是带变量的模板时,需要配置本行代码。VarName表示模板中变量的参数名称,VarValue表示该变量实际要配置的参数值,请按照实际情况配置VarName和VarValue。若需要配置多个变量,请参考本行代码格式进行添加。account = 'account' # 实际账号password = 'password' # 实际密码signature = '【huawei】' # 签名名称def main(): # 请求Headers header = {'Content-Type': 'application/json;charset=UTF-8'} # 当发送短信使用的是无变量模板时,不需要添加templateParas参数。 mtSmsMessage = { 'mobiles': msisdn, 'templateId': smsTemplateId, 'templateParas': templateParas, 'signature': signature, } requestLists = [mtSmsMessage] # 请求Body formData = {'account': account, 'password': password, 'requestLists': requestLists, 'statusCallback': 'https://ip:port/common/sms/notifyReportMessage' } # 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题 r = requests.post(url, data=json.dumps(formData, ensure_ascii=False).encode("utf-8"), headers=header, verify=False) print(r.text) # 打印响应信息if __name__ == '__main__': main()
  • 上行短信接收 # -*- coding: utf-8 -*-import urllib.parse# 上行短信通知样例(urlencode)updata = "mobile=%2B12345678911&content=***&sendTime=20220127020758&extCode=";'''解析上行短信通知数据@param data: 短信平台推送的上行短信通知数据@return: '''def onSmsUpData(data): keyValues = urllib.parse.parse_qs(data); #解析上行短信通知数据 ''' Example: 此处以解析content为例,请按需解析所需参数并自行实现相关处理 'mobile': 上行短信手机号 'content': 短信内容 'sendTime': 上行短信时间 'extCode': 扩展码 ''' content = keyValues.get('content'); #上行短信发送的内容 print('Sms up data. Content: ', content[0]);if __name__ == '__main__': onSmsUpData(updata)