云服务器内容精选

  • 参数解释 MapReduce Action节点中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 name map-reduce action的名称 resourceManager MapReduce ResourceManager地址 name-node HDFS NameNode地址 queueName 任务处理时使用的MapReduce队列名 mapred.mapper.class Mapper类名 mapred.reducer.class Reducer类名 mapred.input.dir MapReduce处理数据的输入目录 mapred.output.dir MapReduce处理后结果数据输出目录 mapred.map.tasks MapReduce map任务个数 “${变量名}”表示:该值来自“job.properties”所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 参数解释 FS Action节点中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 name FS活动的名称 delete 删除指定的文件和目录的标签 move 将文件从源目录移动到目标目录的标签 chmod 修改文件或目录权限的标签 path 当前文件路径 source 源文件路径 target 目标文件路径 permissions 权限字符串 “${变量名}”表示:该值来自“job.properties”所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 样例代码 nameNode=hdfs://hacluster resourceManager=10.1.130.10:26004 queueName=QueueA dataLoadRoot=examples oozie.coord.application.path=${nameNode}/user/oozie_cli/${dataLoadRoot}/apps/dataLoad start=2013-04-02T00:00Z end=2014-04-02T00:00Z workflowAppUri=${nameNode}/user/oozie_cli/${dataLoadRoot}/apps/dataLoad
  • 参数解释 “job.properties”文件中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 nameNode HDFS NameNode集群地址 resourceManager Yarn ResourceManager地址 queueName 流程任务处理时使用的MapReduce队列名 dataLoadRoot 流程任务所在目录名 oozie.coord.application.path Coordinator流程任务在HDFS上的存放路径 start 定时流程任务启动时间 end 定时流程任务终止时间 workflowAppUri Workflow流程任务在HDFS上的存放路径 可以根据业务需要,以“key=values”的格式自定义参数及值。
  • 参数解释 FS Action节点中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 name FS活动的名称 delete 删除指定的文件和目录的标签 move 将文件从源目录移动到目标目录的标签 chmod 修改文件或目录权限的标签 path 当前文件路径 source 源文件路径 target 目标文件路径 permissions 权限字符串 “${变量名}”表示:该值来自job.properties所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 参数解释 “coordinator.xml”中包含的各参数及其含义,请参见表1。 表1 参数含义 参数 含义 frequency 流程定时执行的时间间隔 start 定时流程任务启动时间 end 定时流程任务终止时间 workflowAppUri Workflow流程任务在HDFS上的存放路径 resourceManager MapReduce ResourceManager地址 queueName 任务处理时使用的Mapreduce队列名 nameNode HDFS NameNode地址 “${变量名}”表示:该值来自“job.properties”所定义。 例如:${nameNode}表示的就是“hdfs://hacluster”。(可参见job.properties)
  • 代码样例 取消冷热时间线。 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 = "";
  • 代码样例 以下代码片段是添加用户的示例,在rest.UserManager类的main方法中。 密码明文存储存在安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 //访问Manager接口完成添加用户 operationName = "AddUser"; operationUrl = webUrl + ADD_USER_URL; jsonFilePath = "./conf/addUser.json"; httpManager.sendHttpPostRequest(httpClient, operationUrl, jsonFilePath, operationName)
  • 代码样例 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");
  • 发送短信 # -*- 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)
  • 状态报告接收 # -*- coding: utf-8 -*-import urllib.parse# 短信平台上报状态报告数据样例(urlencode)#success_body = "requestId=20220126&mobile=12345678911&messageId=2022012619403400&status=DELIVRD&resultCode=000000&resultDesc=success&smsCount=null&receiveTime=null";failed_body = "requestId=20220126&mobile=12345678911&messageId=2022012619403400&status=E200027&resultCode=1020001&resultDesc=Parameter error&smsCount=null&receiveTime=null";'''解析状态报告数据@param data: 短信平台上报的状态报告数据@return: '''def onSmsStatusReport(data): keyValues = urllib.parse.parse_qs(data); #解析状态报告数据 ''' Example: 此处以解析status为例,请按需解析所需参数并自行实现相关处理 'messageId': 短信唯一标识 'smsCount': 长短信拆分条数 'receiveTime': 资源更新时间 'status': 状态码 ''' status = keyValues.get('status'); #状态报告枚举值 # 通过status判断短信是否发送成功 if 'DELIVRD' == str.upper(status[0]): print('Send sms success. messageId: ', keyValues.get('messageId')[0]); else: # 发送失败,打印status print('Send sms failed. messageId: ', keyValues.get('messageId')[0]); print('Failed status: ', status[0]);if __name__ == '__main__':# onSmsStatusReport(success_body) onSmsStatusReport(failed_body)