• [技术干货] CodeArts IDE插件开发指南
    0. 安装环境在开始之前,请检查是否已安装 Node.js (cid:link_6)。已安装的情况下,可在本地CMD或CodeArts IDE终端使用命令行 node -v 以及 npm -v 查看相应的安装版本。1. 实战教程(1)创建一个新的插件打开 CodeArts IDE,点击菜单“文件 -> 新建项目”,选择“扩展”。填入插件的相关信息,为了更好地理解后续教程,建议类型选择“支持可展示的Webview以及弹窗的扩展”或者“支持注册创建项目向导的扩展”。注意:发布商必须为插件市场中已创建的发布商,否则将无法在插件市场上发布插件,也可在发布前在 package.json 文件中修改。点击“创建”,等待插件项目创建完成,选择是否在当前窗口打开新建的插件项目。(2)使用CodeArts IDE调试你的前后端代码后端调试        在插件的 src/node/ 目录下存放的是插件的后端代码,后端代码运行在 nodejs 环境中,插件项目在创建的时候已经默认生成了一个后端文件 backend.ts,对于轻量级的插件,只需要在该文件中添加自己想要实现的业务功能即可,该文件包含了三个默认的方法 init()、run()、stop()。另外还默认添加了一个 doSomething 方法,这个方法仅仅是作为示例使用,开发者可以根据需要进行修改或删除。        这里我们简单介绍下 init,run 和 stop 方法:init 函数:作为该后端实例的初始化方法,可以在插件启动的时候进行一些初始化操作,写在该函数中的代码一定会先于 run 和其他函数被调用,这里需要注意的是,对于前端暴露给后端的函数不能在 init 函数中进行调用,也就是不能在 init 方法中执行 this.plugin.call 调用。run 函数:作为后端实例的主逻辑函数,承担着业务功能入口的作用,在该函数中可以方便地调用 CodeArts 的 API,比如 codearts.window.showInformationMessage(`hello world!`); 也可以调用前端暴露出来的函数,也就是可以在该方法中执行 this.plugin.call 调用。stop 函数:将会在插件被停止前被调用,如有需要可以进行一些资源清理的操作。        后端调试步骤:1. 添加断点:在 backend.ts 的 run() 函数中添加一个断点2. 打开调试窗口:按 F5 或者点击右上角调试工具栏中的开始调试按钮,打开【扩展开发宿主】窗口3. 进入断点,进行调试​前端调试        与插件的后端不同,前端的代码最终将被编译并运行于浏览器环境中,前端的代码存放于 src/browser 目录中,插件项目在创建的时候会默认生成两个前端源码文件 frontend.ts 和 dynamic-webview.ts。这两个文件的内容与后端 backend.ts 的结构非常相似,只不过运行的环境不同而已,这里就不再重复对这两个文件中 init()、run()、stop() 方法进行介绍。由于前端运行在浏览器环境中,代码调试将借助于浏览器自带的调试功能。如果需要自动重新编译前端代码,可以在终端中执行命令 npm run watch-browser,然后再运行调试。在启动调试后如果修改了代码,只需在调试窗口按 Ctrl+R 重新加载窗口即可看到修改后的效果。        前端调试步骤:0. 前端调试前,需要先把 webpack.config.js 文件中的 devtool 配置为 'inline-source-map',然后在命令行执行 npm run prepare1. 添加断点:在 frontend.ts 的 run() 函数中添加一个断点2. 打开调试窗口:按 F5 或者点击右上角调试工具栏中的开始调试按钮,打开【扩展开发宿主】窗口3. 打开插件注册的视图,进入断点,进行前端的调试,若无法进入断点,可以使用 Ctrl + Shift + I 打开“开发人员工具”,再 Ctrl + R 重新加载当前窗口(3)前后端方法相互调用后端调用前端1. 在前端定义暴露给后端的方法打开 src/browser/frontend.ts 文件,其中 Frontend 类继承自 AbstractFrontend,除了需要实现的 init()、run()、stop() 这三个方法,我们自定义了一个 myApi(message: string) 方法,如果想要把 myApi 方法暴露给后端去调用,只需要在函数上添加 @expose('function_id') 修饰器。注意:多个expose修饰器中的function_id不能重复@expose('myplugin.page.myApi')public myApi(message: string): string { console.log(message); return 'this is a return value from frontend function';}2. 在后端调用前端暴露的方法打开 src/node/backend.ts 文件,其中 Backend 类继承自 AbstractBacend,需要实现 init(), run(), stop() 这三个方法,我们可以在 run() 方法中通过 this.plugin.call() 调用在前端定义的 myApi 方法并获取到返回值。public async run(): Promise<void> { const retValue = await this.plugin.call('view_type_of_your_plugin_view::myplugin.page.myApi', 'this is a function call from backend'); this.plugin.log(LogLevel.INFO, retValue);}前端调用后端类似的,我们可以在后端定义自己的方法并将方法暴露给前端调用。1. 在后端定义暴露给前端的方法打开 src/node/backend.ts 文件,自定义一个 doSomething(name: string) 方法。@expose('your_backend_function_identifier')public doSomething(name: string): boolean { codearts.window.showInformationMessage(`hello ${name}!`); return true;}2. 在前端调用后端暴露的方法打开 src/browser/frontend.ts 文件,在 run() 方法中通过 this.plugin.call() 调用在后端定义的 doSomething 方法。run(): void { this.plugin.call('your_backend_function_identifier', 'world');}(4)事件订阅:发布和监听事件在插件后端监听事件打开 src/node 目录下的 backend.ts 文件,在 Backend 类的 run() 方法中我们添加如下代码注册监听一个文件删除的事件。const registeredEvent = codearts.workspace.onDidDeleteFiles((event) => { codearts.window.showInformationMessage(`${event.files.join(',')} deleted.`);});this.plugin.context.subscriptions.push(registeredEvent);如果想要删除这个事件的监听可以直接调用 registeredEvent 的 dispose() 方法即可。大家可以尝试注册一些其他的事件并测试效果。在插件前端监听事件打开 src/browser 下的 fronted.ts 文件,我们通过在 Frontend 类的 run() 方法中添加如下代码注册监听一个改变当前活动的编辑器的事件。const eventHandler = (eventType: any, evt: any) => { // do something};this.plugin.subscribeEvent(EventType.WINDOW_ONDIDCHANGEACTIVETEXTEDITOR, eventHandler);前端取消事件注册的方式和后端并不相同,我们需要使用 plugin 对象的 unsubscribeEvent 方法取消注册的事件处理句柄。this.plugin.unsubscribeEvent(EventType.WINDOW_ONDIDCHANGEACTIVETEXTEDITOR, eventHandler);(5)国际化插件创建完后,在根目录下默认生成了 package.nls.json 和 package.nls.zh-cn.json 文件,package.nls.json 文件用来记录默认情况下的翻译词条,比如没有找到对应语言的翻译文件插件框架将默认采用该文件中的词条。package.nls.zh-cn.json 则是中文简体的翻译词条文件,如果插件需要支持其他语言也可以自行添加翻译文件。localize 方法需要提供了一个 key 参数来指定使用国际化文件中的词条索引键值,后续的不定参数用来对翻译词条中的占位符进行替换,词条中支持使用"{0} {1} {2}"这样的格式进行占位,localize 方法的第二个参数开始会被依次替换到占位符中。localize(key: string, ...args: any[]): string;示例如下:{ "plugin.welcome": "Welcome!", "plugin.hello": "Hello {0}!"}内置成员plugin的localize方法我们还在前后端内置的 plugin 成员变量中实现了 localize 方法。Frontend类 (src/browser/fronted.ts) 和 Backend类 (src/browser/backend.ts) 分别继承了 AbstractFrontend 前端类和 AbstractBackend 后端类,可以直接使用 this.plugin.localize 方法进行本地化翻译。// 不带参数this.plugin.localize('plugin.welcome');// 带参数this.plugin.localize('plugin.hello', 'world');直接引入localize方法import { localize } from '@cloudide/nls';使用如下代码就可以将词条填充为: Hello World!localize('plugin.hello', 'World');页面文件中的国际化方法通用插件可以使用 ejs 和 pug 引擎来渲染界面,无论是 ejs 还是 pug 引擎插件框架都为开发者提供了一个 l10n 内置对象,里面存储了当前所选语言的翻译词条列表。对于选择 ejs 引擎来做界面渲染的开发者可以在 ejs 文件中使用如下方式来对需要本地化的文案进行翻译:<%= l10n['plugin.hello'] %>对于使用 pug 引擎的开发者可以使用如下方式:#{l10n['plugin.hello']}(6)插件打包安装在终端执行命令“npm run package”打包插件在 CodeArts IDE 安装打包后的插件2. 插件样例插件注册视图标题栏行为:codearts-example-view-title-actions插件注册菜单:codearts-example-registerMenu插件注册项目创建向导:codearts-example-project-wizard3. 插件发布通过 IDE 直接发布到插件市场0. 若还没有创建发布商,请参考《CodeArts IDE插件市场帮助文档》,前往插件市场创建一个发布商。若已创建发布商但还未创建发布商凭证,请前往 插件市场发布商管理 创建,以下是创建凭证的步骤:(1)点击新增凭证(2)输入凭证名称,并设置过期时间(3)创建成功,请妥善保存发布商凭证,关闭窗口后将无法再次获得此凭证1. 发布前,请确认 package.json 中的 publisher 与发布商凭证对应的发布商的唯一标识相符2. 在 IDE 终端执行命令“npm run publish”,等待打包完成后输入发布商凭证,按回车确认3. 等待插件上传并发布4. 成功后,可以在插件市场的插件管理中看到已上传的插件,默认为灰度待发布,需要插件市场管理者权限审核待发布插件,然后由发布商角色为manager/developer/ower权限用户,将灰度发布状态插件提交正式发布,无需审核,该版本将自动变为正式版本,可以在CodeArts IDE插件市场中搜索到此插件。通过插件市场进行发布请参考《CodeArts IDE插件市场帮助文档》,按照步骤在插件市场上传和管理自己的插件。
  • [使用说明] CodeArts IDE登录失败网络连接检查指南
    外部网络一、登录页显示“无法访问此网站”或一直处于加载状态解决方法:请检查①电脑网络是否连通②是否设置了代理服务器,设置是否正确③是否防火墙安全等级过高或防火墙策略设置不当二、客户端登录超时用户未在一分钟内登录,导致客户端提示“登录超时,请重试”,请尝试重新登录。企业内网一、登录页显示“无法访问此网站”或一直处于加载状态​解决方法:请检查 ①电脑网络是否连通 ②系统代理设置是否正确代理设置:打开系统设置 - 网络和Internet - 代理,开启“使用代理服务器”二、登录页显示“登录失败”登录时间过长且登录失败,重试后仍然显示登录失败。解决方法:请检查CodeArts IDE代理设置是否正确。(1)打开IDE设置(2)搜索“proxy”,输入使用的代理(3)输入完成后点击“检查连接”,输入URL地址检查网络是否连通显示“连接成功”说明网络连接正常,请再次尝试登录。
  • [热门活动] 【有奖活动】HCSD云上开发成长计划 —成都东软学院专场
    当今时代复杂多变,科技发展大势所趋,软件研发作为推动这个时代快速演进的发动机,每一位开发者都要保持敏锐的行业洞察力,与领跑趋势的能动性行业趋势日新月异。顺应国家产业发展需求,华为云将与高校共同探索新工科教学模式,结合企业应用情况和学生情况,助推新生工程教育,将加速云开发走进高校 。携华为云CodeArts IDE 走进高校,走入课堂,作为一站式云上开发创新工具,释放学生创新活力!主办单位:华为云计算公司、成都东软学院计算机与软件学院承办单位: 成都东软学院计算机与软件学院网络工程系>>活动报名入口<<学习内容:一、【云上开发初体验】【认识CodeArts IDE】:初识CodeArts IDE【云上开发体验】:华为云CodeArts IDE调用API语音合成二、【华为云软件开发进阶实践】【认识CodeArts】:从0到1深度体验CodeArts 【最佳案例实践】:华为端到端(HE2E)DevOps三、【华为云开发者认证高阶挑战】考取开发者认证证书,提升个人竞争力!了解开发者认证详情报名本活动后>>戳我申请<<1元兑换价值500元开发者认证考试券!活动福利:福利一:参与训练营学习,完成以下学习体验任务,达标即可抽取好礼!学习体验礼:完成【云上开发体验】华为云CodeArts IDE调用API语音合成,即可参与有机会抽取奖品:保温杯(共30份),本活动结束后导出完成名单进行统一抽奖。心得分享有礼:反馈学习体验截图+心得体会/产品改进建议等内容至本活动贴评论区,活动结束后,运营小姐姐将抽取优质内容,送出荣耀智能体脂2、保温杯(共12份)福利二:邀请好友共同学习,赢惊喜大礼! 邀请100人参与学习,排名1名,即可得HUAWEI MatePad1个。(限1份)邀请85人参与学习,排名2-3名,即可得HUAWEI WATCH GT2 1个。(限2份)邀请40人参与学习,排名4-5名,即可得华为AI音响或荣耀FlyPods青春版无线耳机1个。(限2份)邀请30人参与学习,排名6-7名,即可得华为10000mAh移动电源SuperCharge快充版或荣耀Xsports运动蓝牙耳机1个。(限2份)邀请20人参与学习,排名8-9名,即可得华为手环4或荣耀手环 5i 标准版1个。(限2份)邀请8人参与学习,排名10-40名,即可得华为定制三合一数据线1个(限30份)如何邀请好友:参与活动报名生成你的邀请二维码;好友通过你的邀请码报名活动参与学习,且好友需为首次注册华为云的新用户,参与学习验证标准:完成免费开通CodeArts及下载CodeArts IDE并登录华为云账号。加入社群,关注最新活动消息
  • [热门活动] 5分钟云上开发体验:通过CodeArts IDE插件调用API,高效合成语音
    实验内容:CodeArts IDE定位华为云开发者桌面,是利用华为自研IDE内核技术,面向华为云开发者提供的智能化可扩展桌面集成开发环境(IDE),内置华为自研JAVA语言开发支持,搭载华为云行业和产业开发套件,提供极致的一站式用云和开发体验。本实验基于华为云自研CodeArts IDE,指导用户通过使用华为云API,来实现一个文字合成语音的应用。实验分为了初阶、高阶、进阶三个版本。初阶版:预置好了一段工程示例,用户通过使用华为云API来实现语音合成的功能,从而合成语音文件高阶版:指导开发者如何利用华为云提供的SDK来编写代码,从而实现语音合成的程序进阶版:对高阶版的程序进行改造,利用CodeArts IDE提供的代码补全、重构等功能,指导开发者实现一个更复杂更高级的功能。实验目的:通过完成此实验让开发者学习使用华为云CodeArts IDE,通过其强大功能完成应用开发通过完成此实验让开发者更加了解华为云API,基于华为云强大的API可以实现更多复杂的功能和应用完成的注意事项:用户需要实名认证才能免费体验用户如果被华为云判断为黑产用户,则没有免费体验的权限用户免费体验示例,必须进入体验页面前提条件:华为云账号注册&实名认证 请注册华为云账号并完成实名认证,实验过程中请使用Chrome浏览器完成相关操作。华为云账号注册步骤请参考:cid:link_1实名认证操作步骤请参考:cid:link_21.CodeArts IDE Online 路径点击如下链接,访问CloudIDE产品首页(需登录华为云账号),点击“免费体验云开发”按钮,进入IDE界面cid:link_52.CodeArts IDE(客户端)语音合成体验路径2.1 体验CodeArts IDE:  2.1.1下载CodeArts IDE(客户端)       ①访问如下CodeArts产品下载页(需登录华为云账号),点击下载,下载完成后安装到本地cid:link_02.1    2.1.2登录华为云,体验API  ①安装完成后,打开CodeArts IDE客户端,点击右上角登录按钮,登录华为云账号;    ②点击客户端右侧边栏中的华为云API插件,了解集成的华为云API能力(建议点击华为云API,将其拖动到左边侧边栏中,方面后续操作)[Q(1] 2.2 初阶版:体验语音合成API,合成一段语音2.2.1 环境准备(一键式小程序)①下载一键式环境搭建小程序到任意目录(此目录不包含中文目录,否则可能会出现未知问题) ,此小程序依赖你本地安装了7zip/WinRAR等解压工具,双击打开,如果你已经安装,输入y回车。②此时小程序会将2.2.2中的代码工程以及OpenJDK下载到小程序所在的目录中,并完成解压,打开代码工程,为工程配置JDK(如果出现未知问题,也可以按照2.2.2中一步步手动操作)2.2.2 环境准备(手动初始化)①下载OpenJDK11到本地目录,然后解压到任意路径(需要记住此路径)2.点击下载工程,解压到任意目录在CodeArts IDE客户端点击“文件”-> “打开…”、“打开文件夹”,找到刚刚的工程目录,选择文件夹,然后选择此工程内打开第一次加载Java插件需要完成初始化,需要等待一会儿,等待右下角的Initializing Java Language Server Features完成后开始下一步③为工程配置JDKJava Smart Assist插件加载完成后,此时右下角会显示Language Server is ready 以及 提示为配置JDK。点击左下角的“管理”按钮,选择“设置”,在弹出设置选项中依次选择“Java SmartAssist开发套件”->“Project Settings”-> “Project SDK目录选择”-> 找到刚刚JDK的解压目录 ->选择文件夹,此时工程右下角会显示加载JDK,需要稍等片刻选择完成后可以关闭此配置项,IDE会自动帮您加载JDK2.2.3 体验API①搜索API,在CodeArts IDE客户端内,打开“华为云API”,搜索“语音合成”,选择第一个搜索结果②右侧弹出RunTts详细情况,可以查看API相关信息,包括(API是干啥的,有哪些参数)然后选择“调试API”页签③输入需要合成的文字,例如“华为云软件开发生产线”,选择audio_format为.mp3,点击“调试”按钮,可以看到API的调试结果,可以看到“调试成功”,查看右下“响应结果”的“响应体”页签,可以看到返回的结果,“data”是音频的base64编码。④点击响应体右侧的“拷贝”图标按钮,再将左边侧边栏的华为云API页面切换到“工程页面”,找到src/resources目录,将结果备份到工程目录src/resources/APIResponse.json中⑤找到test目录下的测试类SisServiceTest.java,点击找到方法“should_return_audio_when_response_json()”,点击“Run‘All in SisServiceTest’”,最后可以看到目录下生成的音频文件。2.3 高阶版:通过编写代码实现语音合成的应用2.3.1 为程序配置AK/SK代码访问API需要AK/SK,参考文档获取用户AK/SK,将其输入到resources文件夹下的credentials.properties文件中的ak、sk中2.3.2 编写SDK代码①在editor中点击右键打开菜单,选择启用“华为云SDK代码补全助手”,在IDE中输入RunTts,DevKit会自动帮你联想出合适的API,选择RunTts,DevKit会帮你自动把SDK调用实现,并且将代码中涉及到的依赖自动import②点击编辑API参数,填入相关参数后,点击确定,生成API参数的代码③修改函数,在try括号中进行语句添加return response,将调用API的代码client.runTts返回的结果response作为函数的返回。④找到test目录下的测试类SisServiceTest.java,找到方法“should_return_audio_when_call_api”,点击“Run‘All in SisServiceTest’”,最后可以看到目录下生成的音频文件。2.4 进阶版:改造现有工程,实现更多功能(此阶段需要开发者具备一定编码能力)将方法TextToSpeech进行改造,可以让用户输入一段台词(男女对话),将其中男生的台词生成男生的语音,女生的台词生成女生的语音。3 FAQ: 3.1Java语言服务(Java Language Server)加载失败/在Java语言服务初始化时,如果关闭了IDE窗口、取消了加载等等情况,则会出现安装失败,点击重新安装即可。如果重新安装仍有问题,参考3.2解决方案。 3.2点击Java SmartAssist开发套件空白原因可能是因为Java语言服务初始化失败导致,彻底解决改问题,找到C盘/用户目录下的.codearts文件夹,删除language-server文件夹,重新启动CodeArts IDE客户端,此时会重新加载Java语言服务3.3JDK没有加载/加载失败这是因为工程的JDK没有配置,可以参考2.2.2中为第三步:工程配置JDK。另外还有一种一劳永与的方法:将下载并解压后的OpenJDK目录配置到电脑windows环境变量的JAVA_HOME变量中(如何设置windows环境变量,可以自行baidu),如图所示3.4在加载工程的时候出现Cannot resolve xxx或者 Could not transfer artifact xxx等这是因为工程所依赖的二方包没有下载下来,工程中默认链接的是官方的下载源(在国外),可能因为网络问题或者其他问题导致链接不稳定,此时把配置文件修改成链接到国内的下载源:点击下载最新的配置(settings.xml),将此目录(C盘用户目录下找到.codearts文件夹,然后按照此路径找到settings文件.codearts\language-server\2210.0.17\language-server\plugins\maven\lib\maven3\conf)下的文件替换3.5 登录/激活相关问题如果在实验过程中遇到CodeArts IDE登录问题,可以参考CodeArts IDE登录检查指导.docx
  • [区域初赛赛题问题] Java程序在线编译异常
    程序文件在windows上可以正常编译和运行,但是在线训练时显示编译异常,排除了以下可能性:1、JDK版本不正确(JDK版本为1.8,)2、未引入第三方库3、头文件异常(将本程序的头文件放到官方给的demo里可以成功提交)4、目录结构不正确(将源代码复制到官方demo并打包)5、文件夹内有其余文件请各位大佬指导下,谢谢!
  • [技术干货] idea中使用git合并分支
    idea使用git 合并分支 1. 将主分支(master)更新到自己的分支(dev) 右下角点击分支、checkout到自己分支下、点击自己的分支、选择 remote branches 中的 origin/master 分支,点击 "merge selected into current" checkout到自己分支下、点击Git/Pull、选择 origin/master 分支、点击Pull 两种方法都可。  2. 将自己的分支(dev)合并到主分支(master) checkout到主分支(master)、先Pull一下最新的代码、点击右下角主分支、在local branches里选择自己的分支点击"merge selected into current"、然后记得push下、推送至远程仓库 ———————————————— 原文链接:https://blog.csdn.net/m0_52366016/article/details/122131791 
  • [技术干货] CodeArts IDE for RemoteShell快捷键
    CodeArts for RemoteShell区域按键功能全局快捷键Ctrl + Shift + W关闭窗口Ctrl + K组合键基本编辑Ctrl + X剪切Ctrl + C复制Alt + Arrowup向上移动行Alt + Arrowdown向下移动行Shift + Alt + Arrowup在上面复制当前行Shift + Alt + Arrowdown在下面复制当前行Ctrl + Shift + K删除一行Ctrl + Enter在下面插入行Ctrl + Shift + Enter在上面插入行Ctrl + Shift + \跳转到匹配括号Ctrl + ]增加缩进Ctrl + [减少缩进Home转到行首End转到行尾Ctrl + Home转到文件开头Ctrl + End转到文件末尾Ctrl + Arrowup向上滚动行Ctrl + Arrowdown向下滚动行Alt + Pageup向上滚动页面Alt + Pagedown向下滚动页面Ctrl + Shift + [折叠区域Ctrl + Shift + ]展开区域Ctrl + K,Ctrl + [折叠所有子区域Ctrl + K,Ctrl + ]展开所有子区域Ctrl + K,Ctrl + 0折叠所有区域Ctrl + K,Ctrl + J展开所有区域Ctrl + K,Ctrl + C添加行注释Ctrl + K,Ctrl + U删除行注释Ctrl + /切换行注释Shift + Alt + A切换块注释Alt + Z切换自动换行导航Alt + Leftarrow后退Alt + Rightarrow前进查找&替换Ctrl + F查找Ctrl + H替换F3查找下一个Shift + F3查找上一个Alt + Enter选择所有的匹配Ctrl + D将选择添加到下一个查找匹配项Ctrl + K,Ctrl + D将上一个选择移到下一个查找匹配项Alt + C切换是否区分大小写Alt + R切换是否正则表达式Alt + W切换是否全字匹配多光标选择Alt  +  (鼠标点击)插入光标Ctrl  +    Alt  +  ↑在上方插入光标Ctrl  +    Alt  +  ↓在下方插入光标Ctrl  +    U撤消上一个光标操作Shift  +    Alt  +  I在所选的每一行的末尾插入光标Ctrl  +    L选择当前行Ctrl  +    Shift  +  L选择所有当前选择Ctrl  +    F2选择所有出现的当前单词Shift  +    Alt  +  →扩展选择Shift  +    Alt  +  ←收缩选择Shift  +    Alt  +  (拖曳鼠标)列(框)选择Ctrl  +    Shift  +  Alt  +  (箭头键)列(框)选择Ctrl  +    Shift  +  Alt  +  Pageup向前列(框)选择页面Ctrl  +    Shift  +  Alt  +  Pagedown向后列(框)选择页面代码编辑Ctrl + Space显示代码推荐Ctrl + K,Ctrl + X删除每一行行尾空格编辑器editorCtrl + F4,Ctrl + W关闭当前编辑页Ctrl + Shift  + Pageup向左移动编辑器Ctrl + Shift + Pagedown向右移动编辑器Ctrl + \分割编辑器Ctrl + 1 第一编辑器组获取焦点Ctrl + 2第二编辑器组获取焦点Ctrl + 3第三编辑器组获取焦点Ctrl + K,Ctrl + LeftArrow让上一个编辑器组获取焦点Ctrl + K,Ctrl + RightArrow让下一个编辑器组获取焦点Ctrl + K,LeftArrow向左侧移动当前编辑器组Ctrl + K,RightArrow向右侧移动当前编辑器组文件管理Ctrl + S保存文件Ctrl + F4,Ctrl + W关闭文件Ctrl + Shift + T重新打开最近一次关闭的编辑器Ctrl + Tab打开下一个文件Ctrl + Shift + Tab打开上一个文件Ctrl + K,P复制当前活动文件的路径显示F11切换全屏Ctrl + =放大显示Ctrl + -缩小显示Ctrl + B显示/隐藏侧边栏Ctrl + K,Z禅模式,按两次esc退出终端Ctrl + Shift + `创建新终端Ctrl + C复制选择Ctrl + V粘贴到活动终端Ctrl + Arrowup向上滚动Ctrl + Arrowdown向下滚动Shift + Pageup向上滚动页面Shift + Pagedown向下滚动页面Ctrl + Home滚动到顶部Ctrl + End滚动到底部
  • [技术干货] CodeArts IDE for RemoteShell常见问题
    一、登录激活常见问题1、登录华为云失败,该如何处理?解决办法:检查本机是否需要配置proxy登录,如已配置请检查proxy是否有效。在"管理代理服务器"弹窗中配置全局代理,可以成功登录激活RemoteShell。二、proxy配置常见问题1、登录华为云服务器,proxy该如何设置?新建主机连接时,可在"管理代理服务器"弹窗配置。如需修改,可点击修改远程主机信息进行修改。2、proxy配置修改后不生效,如何解决?解决办法:可以尝试点击关闭该主机的所有连接,再重新操作连接。3、proxy配置检查连接失败,如何解决?解决办法:检查proxy的地址和端口是否有效,用户名或密码是否输入错误,修改后重新尝试。三、新建主机连接常见问题1、新建主机连接失败,可根据以下可能原因排查重试。检查用户名、密码是否输入正确。确保SSH服务已开启(默认端口为22),如果修改SSH默认的22端口,请确认要连接的远程端口已配置且生效,并添加对应的防火墙规则。确认当前使用proxy代理配置出口IP的全部地址的远程端口(SSH默认端口为22)已经允许。检查弹性云服务器的防火墙是否允许当前该主机使用的proxy代理配置的出口IP作为入口IP。请确认网络ACL没有禁用当前该主机使用的proxy代理配置的出口IP。2、遇到如下连接失败的场景,该如何解决?在连接远程主机时,遇到如下报错时,即为代理服务器未输入用户名和密码引起。解决办法:需在代理服务器弹窗中输入用户名和密码,如下图:​在连接远程主机时,遇到如下报错时,即为网络超时引起。解决办法:确认proxy地址是否有效。在连接远程主机时,遇到如下报错时,即为错误的密码或主机IP引起。解决办法:修改正确密码后,重新尝试连接。或尝试移除该远程主机后,使用正确的主机地址进行新建远程连接。四、增加用户连接常见问题1、用户尝试打开较多终端时,受到限制?单个用户目前仅支持同时创建7个终端。2、用户名错误导致连接失败,无法修改用户名,如何操作才能连接成功?解决办法:不可直接修改用户名,请移除该用户连接后重新尝试使用正确的用户名新建连接。
  • [技术干货] 使用CodeArts IDE for RemoteShell 连接华为云ECS主机
    简介本章节主要介绍使用RemoteShell插件的远程主机和用户连接、管理代理配置、用户操作远程文件系统及获取华为云服务器相关功能,支持开发者在完全不需要拥有远程开发环境源代码的情况下,也能轻松获得远程开发体验。使用CodeArts IDE for RemoteShell,您可以连接华为云ECS主机或任意主机。一、下载安装CodeArts IDE for Remoteshell现已开放公测,下载获取免费体验。二、创建主机连接RemoteShell支持创建主机(可多台)远程连接,在新建远程连接时,可选择使用或不使用代理进行连接,身份认证支持密码、密钥、双因子三种方式。当RemoteShell自动打开远程主机终端,成功获取远程文件系统时,说明主机连接成功,界面提示如下:在使用过程中,可对远程主机基本信息进行修改,也可以移除主机和断开所有主机连接。三、proxy配置管理可以新增,编辑,删除proxy。如果您需要配置全局代理,可以在“应用程序代理”中进行修改。如果您的远程主机需要使用代理进行连接,只可选用列表中其中一个或不使用代理,即在创建主机连接时选中某个代理或者不使用,或对已有主机信息进行修改。四、增加用户使用连接创建主机连接成功后,会自动增加当前用户的远程使用权限。同时也支持一台主机增加多用户连接。当RemoteShell自动打开远程主机终端,成功获取相应的远程文件系统,说明用户连接成功。在使用过程中,可对用户连接的基本信息进行修改,也可以移除该用户和断开该用户的连接。五、操作远程文件系统和远程终端创建主机连接成功后,即可操作远程文件系统。文件系统通过文件树右键菜单即可对内部文件/文件夹进行上传、下载、复制粘贴、删除、重命名等操作。可直接编辑文件代码,也可通过顶部菜单“编辑文件”功能或编辑区右键菜单进行相关操作。通过文件右键菜单可对文件和终端进行拆分、关闭等操作。与语言服务相关的代码补全、重构、跳转、修复、华为云SDK代码补全助等功能,请您持续关注后续迭代版本。2. 远程终端多终端分区布局:您可以在同一个页面中创建多个RemoteShell终端,并可以直接拖动窗口,随意组合成您喜欢的布局。六、获取华为云服务器首先需要使用华为云账号即可完成登录:2.登录成功后才能获取,绿色表示当前可连接的远程机,点击按钮可以继续执行连接到该主机的操作。
  • [使用说明] CodeArts IDE问题反馈
    CodeArts IDE问题反馈
  • [技术干货] HuaweiCloud开发工具CodeArts技术干活合集
    CodeArts定位为华为云开发者桌面,是一款智能化桌面集成开发环境,目标是让开发者更简单的使用华为云,以及更高效的基于华为云来构建应用。小编特意整理了一份关于这款软件的操作合集指南。一、下载安装CodeArtsCodeArts安装要求         至少需要 2 GB RAM ,但是推荐8 GB RAM;         至少需要 2.5 GB 硬盘空间,推荐SSD;         64位Microsoft Windows 10下载并安装CodeArts        >>>前往CodeArts官方下载页面https://devcloud.cn-north-4.huaweicloud.com/codearts/download" \t "_blank        下载解压完成后,运行CodeArts-*.exe文件。        按照安装导航的步骤,选择个人安装配置进行安装。二、CodeArts登陆与激活        运行CodeArts,前往CodeArts下载激活https://bbs.huaweicloud.com/blogs/371339" \t "_blankCodeArts快捷键CodeArts快捷键(一)cid:link_0CodeArts快捷键(二)cid:link_1CodeArts智能代码补全代码补全可以有效的提升开发效率、减少拼写错误和输入代码量。CodeArts依赖于codearts.smartassist-java-ls插件实现代码补全功能。代码补全类型主要有:关键字基础补全名字补全类型补全方法补全片段补全缩写补全智能类型匹配补全标签属性补全CodeArts的代码补全具有能使用字段名称的驼峰字母作为关键字母快速搜索的特点。参考链接cid:link_2CodeArts智能搜索智能搜索是CodeArts的核心功能之一,依赖于Language Server,能够进行项目级别的搜索,比如整个项目全局搜索、文件搜索、类名搜索以及自定义范围的搜索等,通过快捷键Double Ctrl,或Ctrl + N,或Ctrl + Shift + L可以打开搜索框。智能搜索的类型主要有6大类:AllTypeMemberTextFileCommand参考链接cid:link_3CodeArts代码重构重构是通过改变现有程序结构而不改变其功能和用途来提高代码的可重用性和可维护性。CodeArts支持重构操作,提供了多种重要的重构类型,如下:重命名提取重构(方法、常数、接口、字段、变量、参数、超类)引入重构 (字段、常量、变量、参数、参数对象、函数变量、功能参数)复制重构移动和更改重构查找和替换重构内联重构 (方法、字段、变量、匿名类、超类、参数)设计模式与重构补全功能运用参考链接cid:link_4CodeArts常见问题cid:link_5
  • [使用说明] CodeArts IDE下载激活
    1.注册成为华为云账户(如果您已经是华为云用户可跳过此步骤)2.登陆华为云并下载CodeArts3.安装CodeArts开始安装CodeArts可能会被操作系统拦截,遇到如下提示:点击更多信息,然后点击'运行'按钮即可继续安装。4. 登录激活首次打开CodeArts会提示登陆激活,使用华为云账号即可登陆激活。注1:CodeArts暂不支持开放下载试用,我们会根据已试用用户的反馈情况来择机给申请的候选用户提供试用机会。注2:如果不登录激活CodeArts客户端,相关源代码管理、华为云API功能将不能使用。前往>>>开始使用Codearts
  • [生态对接] spark提交yarn idea执行正常,提交yarn报错找不到主类
    【功能模块】spark 代码,rdd提交时报错【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [优秀实践] 鲲鹏众智性能分析工具IntelliJ插件实现
    很荣幸参加《鲲鹏性能分析工具IntelliJ插件实现》项目,我们的项目主要是做Inellij插件开发实现性能分析工具功能。性能分析插件安装卸载等功能可以通过密码认证或密钥认证,下面记录一下通过密钥认证连接的方式①首先打开本地cmd②执行ssh-keygen -m PEM -t rsa -b 2048命令生成公私钥对,生成的公私钥默认保存在C:\Users\username/.ssh目录,id_rsa为私钥,id_rsa.pub为公钥③登录服务器并上传本地生成的公钥文件;普通用户上传至/home/用户名/.ssh目录下;root上传至/root/.ssh目录下上传后将公钥文件id_rsa.pub名字改为authorized_keys④使用chmod 600 authorized_keys命令修改authorized_keys文件权限⑤使用cat /etc/ssh/sshd_config命令查看服务器ssh配置文件。检查如下开关为yes,如果不是,改为yes后保存配置文件,并重启sshd服务:PubkeyAuthentication yesRSAAuthentication yes以上步骤成功后,进入登录页面选择密钥认证,导入本地私钥,其它输入框内容填写正确,点击检测连接,检测成功后就可以开始安装部署了。
  • [最佳实践] 使用IntelliJ IDEA Java创建和使用DLI表
    操作场景DLI支持用户编写代码创建Spark作业来创建数据库、创建DLI表或OBS表和插入表数据等操作。本示例完整的演示通过编写java代码、使用Spark作业创建数据库、创建表和插入表数据的详细操作,帮助您在DLI上进行作业开发。约束限制不支持的场景:在SQL作业中创建了数据库(database),编写程序代码指定在该数据库下创建表。例如在DLI的SQL编辑器中的某SQL队列下,创建了数据库testdb。后续通过编写程序代码在testdb下创建表testTable,编译打包后提交的Spark Jar作业则会运行失败。不支持创建加密的DLI表,即不支持创建DLI表时设置encryption=true。例如,如下建表语句不支持:CREATE TABLE tb1(id int) using parquet options(encryption=true)支持的场景在SQL作业中创建数据库(database),表(table) , 通过SQL或Spark程序作业读取插入数据。在Spark程序作业中创建数据库(database),表(table), 通过SQL或Spark程序作业读取插入数据。环境准备在进行Spark 作业访问DLI元数据开发前,请准备以下开发环境。表1 Spark Jar作业开发环境准备项说明操作系统Windows系统,支持Windows7以上版本。安装JDKJDK使用1.8版本。安装和配置IntelliJ IDEAIntelliJ IDEA为进行应用开发的工具,版本要求使用2019.1或其他兼容版本。安装Maven开发环境的基本配置。用于项目管理,贯穿软件开发生命周期。开发流程DLI进行Spark作业访问DLI元数据开发流程参考如下:图1 Spark作业访问DLI元数据开发流程表2 开发流程说明序号阶段操作界面说明1创建DLI通用队列DLI控制台创建作业运行的DLI队列。2OBS桶文件配置OBS控制台如果是创建OBS表,则需要上传文件数据到OBS桶下。配置Spark创建表的元数据信息“spark.sql.warehouse.dir”的存储路径。3新建Maven工程,配置pom文件IntelliJ IDEA参考样例代码说明,编写程序代码创建DLI表或OBS表。4编写程序代码5调试,编译代码并导出Jar包6上传Jar包到OBS和DLIOBS控制台将生成的Spark Jar包文件上传到OBS目录下和DLI程序包中。7创建Spark Jar作业DLI控制台在DLI控制台创建Spark Jar作业并提交运行作业。8查看作业运行结果DLI控制台查看作业运行状态和作业运行日志。步骤1:创建DLI通用队列第一次提交Spark作业,需要先创建队列,例如创建名为“sparktest”的队列,队列类型选择为“通用队列”。在DLI管理控制台的左侧导航栏中,选择“队列管理”。单击“队列管理”页面右上角“购买队列”进行创建队列。创建名为“sparktest”的队列,队列类型选择为“通用队列”。创建队列详细介绍请参考创建队列。单击“立即购买”,确认配置。配置确认无误,单击“提交”完成队列创建。步骤2:OBS桶文件配置如果需要创建OBS表,则需要先上传数据到OBS桶目录下。本次演示的样例代码创建了OBS表,测试数据内容参考如下示例,创建名为的testdata.csv文件。12,Michael 27,Andy 30,Justin进入OBS管理控制台,在“桶列表”下,单击已创建的OBS桶名称,本示例桶名为“dli-test-obs01”,进入“概览”页面。单击左侧列表中的“对象”,选择“上传对象”,将testdata.csv文件上传到OBS桶根目录下。在OBS桶根目录下,单击“新建文件夹”,创建名为“warehousepath”的文件夹。该文件夹路径用来存储Spark创建表的元数据信息“spark.sql.warehouse.dir”。步骤3:新建Maven工程,配置pom依赖以下通过IntelliJ IDEA 2020.2工具操作演示。打开IntelliJ IDEA,选择“File > New > Project”。图2 新建Project选择Maven,Project SDK选择1.8,单击“Next”。定义样例工程名和配置样例工程存储路径,单击“Finish”完成工程创建。如上图所示,本示例创建Maven工程名为:SparkJarMetadata,Maven工程路径为:“D:\DLITest\SparkJarMetadata”。在pom.xml文件中添加如下配置。<dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.3.2</version> </dependency> </dependencies>图3 修改pom.xml文件在工程路径的“src > main > java”文件夹上鼠标右键,选择“New > Package”,新建Package和类文件。Package根据需要定义,本示例定义为:“com.huawei.dli.demo”,完成后回车。在包路径下新建Java Class文件,本示例定义为:DliCatalogTest。步骤4:编写代码编写DliCatalogTest程序创建数据库、DLI表和OBS表。完整的样例请参考Java样例代码,样例代码分段说明如下:导入依赖的包。import org.apache.spark.sql.SparkSession;创建SparkSession会话。创建SparkSession会话时需要指定Spark参数:"spark.sql.session.state.builder"、"spark.sql.catalog.class"和"spark.sql.extensions",按照样例配置即可。SparkSession spark = SparkSession .builder() .config("spark.sql.session.state.builder", "org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") .config("spark.sql.catalog.class", "org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") .config("spark.sql.extensions","org.apache.spark.sql.CarbonInternalExtensions"+","+"org.apache.spark.sql.DliSparkExtension") .appName("java_spark_demo") .getOrCreate();创建数据库。如下样例代码演示,创建名为test_sparkapp的数据库。spark.sql("create database if not exists test_sparkapp").collect();创建DLI表并插入测试数据。spark.sql("drop table if exists test_sparkapp.dli_testtable").collect(); spark.sql("create table test_sparkapp.dli_testtable(id INT, name STRING)").collect(); spark.sql("insert into test_sparkapp.dli_testtable VALUES (123,'jason')").collect(); spark.sql("insert into test_sparkapp.dli_testtable VALUES (456,'merry')").collect();创建OBS表。如下示例中的OBS路径需要根据步骤2:OBS桶文件配置中的实际数据路径修改。spark.sql("drop table if exists test_sparkapp.dli_testobstable").collect(); spark.sql("create table test_sparkapp.dli_testobstable(age INT, name STRING) using csv options (path 'obs://dli-test-obs01/testdata.csv')").collect();关闭SparkSession会话spark。spark.stop();步骤5:调试、编译代码并导出Jar包单击IntelliJ IDEA工具右侧的“Maven”,参考下图分别单击“clean”、“compile”对代码进行编译。编译成功后,单击“package”对代码进行打包。打包成功后,生成的Jar包会放到target目录下,以备后用。本示例将会生成到:“D:\DLITest\SparkJarMetadata\target”下名为“SparkJarMetadata-1.0-SNAPSHOT.jar”。步骤6:上传Jar包到OBS和DLI下登录OBS控制台,将生成的“SparkJarMetadata-1.0-SNAPSHOT.jar”Jar包文件上传到OBS路径下。将Jar包文件上传到DLI的程序包管理中,方便后续统一管理。登录DLI管理控制台,单击“数据管理 > 程序包管理”。在“程序包管理”页面,单击右上角的“创建”创建程序包。在“创建程序包”对话框,配置以下参数。包类型:选择“JAR”。OBS路径:程序包所在的OBS路径。分组设置和组名称根据情况选择设置,方便后续识别和管理程序包。图4 创建程序包单击“确定”,完成创建程序包。步骤7:创建Spark Jar作业登录DLI控制台,单击“作业管理 > Spark作业”。在“Spark作业”管理界面,单击“创建作业”。在作业创建界面,配置对应作业运行参数。具体说明如下:表3 Spark Jar作业参数填写参数名参数值所属队列选择已创建的DLI通用队列。例如当前选择步骤1:创建DLI通用队列创建的通用队列“sparktest”。作业名称(--name)自定义Spark Jar作业运行的名称。当前定义为:SparkTestMeta。应用程序选择步骤6:上传Jar包到OBS和DLI下中上传到DLI程序包。例如当前选择为:“SparkJarObs-1.0-SNAPSHOT.jar”。主类格式为:程序包名+类名。例如当前为:com.huawei.dli.demo.DliCatalogTest。Spark参数(--conf)spark.dli.metaAccess.enable=truespark.sql.warehouse.dir=obs://dli-test-obs01/warehousepath说明:spark.sql.warehouse.dir参数的OBS路径为步骤2:OBS桶文件配置中配置创建。访问元数据选择:是其他参数保持默认值即可。图5 创建Spark Jar作业单击“执行”,提交该Spark Jar作业。在Spark作业管理界面显示已提交的作业运行状态。查看作业运行结果在Spark作业管理界面显示已提交的作业运行状态。初始状态显示为“启动中”。如果作业运行成功则作业状态显示为“已成功”,通过以下操作查看创建的数据库和表。可以在DLI控制台,左侧导航栏,单击“SQL编辑器”。在“数据库”中已显示创建的数据库“test_sparkapp”。图6 查看创建的数据库双击数据库名,可以在数据库下查看已创建成功的DLI和OBS表。图7 查看表双击DLI表名dli_testtable,单击“执行”查询DLI表数据。图8 查询DLI表数据注释掉DLI表查询语句,双击OBS表名dli_testobstable,单击“执行”查询OBS表数据。图9 查询OBS表数据如果作业运行失败则作业状态显示为“已失败”,单击“操作”列“更多”下的“Driver日志”,显示当前作业运行的日志,分析报错原因。图10 查看Driver日志原因定位解决后,可以在作业“操作”列,单击“编辑”,修改作业相关参数后,单击“执行”重新运行该作业即可。后续指引如果您想通过Spark Jar作业访问其他数据源,请参考《使用Spark作业跨源访问数据源》。创建DLI表的语法请参考创建DLI表,创建OBS表的语法请参考创建OBS表。如果是通过API接口调用提交该作业请参考以下操作说明:调用创建批处理作业接口,参考以下请求参数说明。详细的API参数说明请参考《数据湖探索API参考》>《创建批处理作业》。将请求参数中的“catalog_name”参数设置为“dli”。conf 中需要增加"spark.dli.metaAccess.enable":"true"。如果需要执行DDL,则还要在conf中配置"spark.sql.warehouse.dir": "obs://bucket/warehousepath"。完整的API请求参数可以参考如下示例说明。{ "queue":"citest", "file":"SparkJarMetadata-1.0-SNAPSHOT.jar", "className":"DliCatalogTest", "conf":{"spark.sql.warehouse.dir": "obs://bucket/warehousepath", "spark.dli.metaAccess.enable":"true"}, "sc_type":"A", "executorCores":1, "numExecutors":6, "executorMemory":"4G", "driverCores":2, "driverMemory":"7G", "catalog_name": "dli" }Java样例代码本示例操作步骤采用Java进行编码,具体完整的样例代码参考如下:package com.huawei.dli.demo; import org.apache.spark.sql.SparkSession; public class DliCatalogTest { public static void main(String[] args) { SparkSession spark = SparkSession .builder() .config("spark.sql.session.state.builder", "org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") .config("spark.sql.catalog.class", "org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") .config("spark.sql.extensions","org.apache.spark.sql.CarbonInternalExtensions"+","+"org.apache.spark.sql.DliSparkExtension") .appName("java_spark_demo") .getOrCreate(); spark.sql("create database if not exists test_sparkapp").collect(); spark.sql("drop table if exists test_sparkapp.dli_testtable").collect(); spark.sql("create table test_sparkapp.dli_testtable(id INT, name STRING)").collect(); spark.sql("insert into test_sparkapp.dli_testtable VALUES (123,'jason')").collect(); spark.sql("insert into test_sparkapp.dli_testtable VALUES (456,'merry')").collect(); spark.sql("drop table if exists test_sparkapp.dli_testobstable").collect(); spark.sql("create table test_sparkapp.dli_testobstable(age INT, name STRING) using csv options (path 'obs://dli-test-obs01/testdata.csv')").collect(); spark.stop(); } }scala样例代码scala样例代码object DliCatalogTest { def main(args:Array[String]): Unit = { val sql = args(0) val runDdl = Try(args(1).toBoolean).getOrElse(true) System.out.println(s"sql is $sql runDdl is $runDdl") val sparkConf = new SparkConf(true) sparkConf .set("spark.sql.session.state.builder", "org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") .set("spark.sql.catalog.class", "org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") sparkConf.setAppName("dlicatalogtester") val spark = SparkSession.builder .config(sparkConf) .enableHiveSupport() .config("spark.sql.extensions", Seq("org.apache.spark.sql.CarbonInternalExtensions", "org.apache.spark.sql.DliSparkExtension").mkString(",")) .appName("SparkTest") .getOrCreate() System.out.println("catalog is " + spark.sessionState.catalog.toString) if (runDdl) { val df = spark.sql(sql).collect() } else { spark.sql(sql).show() } spark.close() } }Python样例代码Python样例代码#!/usr/bin/python # -*- coding: UTF-8 -*- from __future__ import print_function import sys from pyspark.sql import SparkSession if __name__ == "__main__": url = sys.argv[1] creatTbl = "CREATE TABLE test_sparkapp.dli_rds USING JDBC OPTIONS ('url'='jdbc:mysql://%s'," \ "'driver'='com.mysql.jdbc.Driver','dbtable'='test.test'," \ " 'passwdauth' = 'DatasourceRDSTest_pwd','encryption' = 'true')" % url spark = SparkSession \ .builder \ .enableHiveSupport() \ .config("spark.sql.session.state.builder","org.apache.spark.sql.hive.UQueryHiveACLSessionStateBuilder") \ .config("spark.sql.catalog.class", "org.apache.spark.sql.hive.UQueryHiveACLExternalCatalog") \ .config("spark.sql.extensions",','.join(["org.apache.spark.sql.CarbonInternalExtensions","org.apache.spark.sql.DliSparkExtension"])) \ .appName("python Spark test catalog") \ .getOrCreate() spark.sql("CREATE database if not exists test_sparkapp").collect() spark.sql("drop table if exists test_sparkapp.dli_rds").collect() spark.sql(creatTbl).collect() spark.sql("select * from test_sparkapp.dli_rds").show() spark.sql("insert into table test_sparkapp.dli_rds select 12,'aaa'").collect() spark.sql("select * from test_sparkapp.dli_rds").show() spark.sql("insert overwrite table test_sparkapp.dli_rds select 1111,'asasasa'").collect() spark.sql("select * from test_sparkapp.dli_rds").show() spark.sql("drop table test_sparkapp.dli_rds").collect() spark.stop()
总条数:179 到第
上滑加载中