首页 文章 精选 留言 我的

精选列表

搜索[快速],共10000篇文章
优秀的个人博客,低调大师

使用StreamingPro 快速构建Spark SQL on CarbonData

前言 CarbonData已经发布了1.0版本,变更还是很快的,这个版本已经移除了kettle了,使得部署和使用 变得很简单,而且支持1.6+ ,2.0+等多个Spark版本。 StreamingPro可以使得你很简单通过一个命令就能体验Carbondata,并且支持Http/JDBC的访问形态。 下载Spark发行版 比如我下载后的版本是这个: spark-1.6.3-bin-hadoop2.6。 下载StreamingPro 地址在这: https://pan.baidu.com/s/1eRO5Wga ,你会得到一个比较大的Jar包。 同时你需要到maven下载一个 carbondata-spark-1.0.0-incubating.jar ,这个因为一些特殊原因才会用到。 你需要一个数据库 因为我们用到了Hive 的mysql,所以你需要准备一个可以连接的数据库。只要能连接就行。如果没有,比如你是mac的话,用 brew install mysql即可。然后brew services start mysql 创建一个数据库: create database hive CHARACTER SET latin1 //如果数据库包字符异常啥的,启动完streamingpro后到数据库做如下更改: alter table PARTITIONS convert to character set latin1; alter table PARTITION_KEYS convert to character set latin1; 写一个hive-site.xml文件 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNoExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>你的mysql账号</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>你的mysql密码</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>file:///tmp/user/hive/warehouse</value> </property> <property> <name>hive.exec.scratchdir</name> <value>file:///tmp/hive/scratchdir</value> </property> <property> <name>hive.metastore.uris</name> <value></value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>true</value> </property> </configuration> 可以启动了 //streamingpro jar包所处的目录, //里面新建一个query.json文件,里面放一个大括号就行 SHome=/Users/allwefantasy/streamingpro ./bin/spark-submit --class streaming.core.StreamingApp \ --master local[2] \ --name sql-interactive \ --jars /Users/allwefantasy/.m2/repository/org/apache/carbondata/carbondata-spark/1.0.0-incubating/carbondata-spark-1.0.0-incubating.jar \ --files $SHome/hive-site.xml \ --conf "spark.sql.hive.thriftServer.singleSession=true" \ $SHome/streamingpro-0.4.8-SNAPSHOT-online-1.6.1.jar \ -streaming.name sql-interactive \ -streaming.job.file.path file://$SHome/query.json \ -streaming.platform spark \ -streaming.rest true \ -streaming.driver.port 9004 \ -streaming.spark.service true \ -streaming.thrift true \ -streaming.enableCarbonDataSupport true \ -streaming.enableHiveSupport true \ -streaming.carbondata.store /tmp/carbondata/store \ -streaming.carbondata.meta /tmp/carbondata/meta参数比较多。大家不用管他。 这样http端口是9004, jdbc端口是 10000。 我们可以通过http创建一张表 , city string, age Int) STORED BY 'carbondata' curl --request POST \ --url http://127.0.0.1:9004/run/sql \ --header 'cache-control: no-cache' \ --header 'content-type: application/x-www-form-urlencoded' \ --header 'postman-token: 731441ac-c398-9a1b-2f06-8725ddbe84cd' \ --data 'sql=CREATE%20TABLE%20IF%20NOT%20EXISTS%20test_table4(id%20string%2C%20name%20string%2C%20city%20string%2C%20age%20Int)%20STORED%20BY%20'\''carbondata'\'''写入数据前,我们建立一个sample.csv的文件, id,name,city,age 1,david,shenzhen,31 2,eason,shenzhen,27 3,jarry,wuhan,35然后将这个文件导入: //实际SQL:LOAD DATA LOCAL INPATH '/Users/allwefantasy/streamingpro/sample.csv' INTO TABLE test_table4 curl --request POST \ --url http://127.0.0.1:9004/run/sql \ --header 'cache-control: no-cache' \ --header 'content-type: application/x-www-form-urlencoded' \ --header 'postman-token: 5eb19ab4-653c-d05f-29ab-6003d7e83755' \ --data 'sql=LOAD%20DATA%20LOCAL%20INPATH%20%20'\''%2FUsers%2Fallwefantasy%2Fstreamingpro%2Fsample.csv'\''%20%20INTO%20TABLE%20test_table4'这个使用我们可以用http查询: //sql: SELECT * FROM test_table4 curl --request POST \ --url http://127.0.0.1:9004/run/sql \ --header 'cache-control: no-cache' \ --header 'content-type: application/x-www-form-urlencoded' \ --header 'postman-token: d99349ae-b226-8a4e-4d65-d92b1771c111' \ --data 'sql=SELECT%20*%20FROM%20test_table4'你也可以写一个jdbc程序: object ScalaJdbcConnectSelect { def main(args: Array[String]) { // connect to the database named "mysql" on the localhost val driver = "com.mysql.jdbc.Driver" val url = "jdbc:hive2://localhost:10000/default" // there's probably a better way to do this var connection:Connection = null try { // make the connection Class.forName(driver) connection = DriverManager.getConnection(url) // create the statement, and run the select query val statement = connection.createStatement() val resultSet = statement.executeQuery("SELECT * FROM test_table4 ") while ( resultSet.next() ) { println(" city = "+ resultSet.getString("city") ) } } catch { case e => e.printStackTrace } connection.close() } }完成。

优秀的个人博客,低调大师

EDAS:快速搞定分布式应用

本期分享嘉宾: 滨雨 多年IT领域工作经验,先后在华为、阿里基础架构部担任软件工程师、项目经理。目前从事存储、cdn、视频、中间件等技术领域的支持,喜欢新技术,喜欢新挑战,喜欢钻研。 攻城狮:谁又动了我模块接口?谁又改了我模块逻辑??? 运维:有bug!模块之间的调用跟个蜘蛛网一样,我怎么排查! 测试:这么复杂的调用逻辑,我的自动化测试用例咋写?! 架构师:业务上升了,系统要部署到多台服务器才行,这我怎么拆?! 新人入职后:代码太难理解,想shi的心都有了……. 老板:为啥大半年过去了需求还没搞定!!! 作为一个开发者,你是否经历过这样的咆哮? 这样的场景出现,不是谁的脾气有bug,而是打开方式或许不对。今天我们就通过一个真实案例,来看看分布式开发对消灭吐槽,促进团队和谐的作用。 单体应用很丰满,现实很骨感 X公司是一个秉承传统的开发方式的典型,如下图的

优秀的个人博客,低调大师

【Spark Summit East 2017】工程快速索引

更多精彩内容参见云栖社区大数据频道https://yq.aliyun.com/big-data;此外,通过Maxcompute及其配套产品,低廉的大数据分析仅需几步,详情访问https://www.aliyun.com/product/odps。 本讲义出自Daniel Lemire在Spark Summit East 2017上的演讲,主要介绍了当代计算机硬件提供了大量新的性能的机会。然而高性能编程仍是一项艰巨的挑战,演讲中给出了一些对于设计侧重于压缩位图索引的更快索引的经验教训。压缩位图索引加速查询在流行系统,如Spark, Git, Elastic, Druid与Apache Kylin中的应用。

优秀的个人博客,低调大师

利用云存储快速实现网站备份

背景 真正运营过网站的人都知道,数据对一个网站来说至关重要,因此,网站数据备份也是日常必做工作。因为误操作,网站被攻击等种种原因都会导致数据丢失,这时,你才会明白“有备无患”的道理。而且由于站点文件的备份过大,用邮件无法发送。 阿里云OSS云储存支持任意文件类型类型存储;同时按量付费的,占用多大的存储空间,付费多少;此外,内网流入流量完全免费。因此OSS适用于图片、音频、视频、日志等海量文件的存储,支持各种终端设备,Web网站程序和移动应用直接向 OSS 写入或读取数据。 方案 通过多备份工具和阿里云OSS平台将网站直接备份到阿里云上。 所需工具包括:多备份、阿里云OSS平台。 具体操作步骤 第一步:登录多备份官网,进入之后,先别急着创建备份任务。先点击邮箱(图中红条处),进入你的个人中心。 你可以看到,这里会显示“已绑定”的网盘和“未绑定”的网盘。 第二步:在“未绑定”的网盘列表中,找到“阿里云”,点击后会弹出下面的页面,提示你填写AccesskeyID等信息。这里有一点需要注意的是:你需要设置你的Bucket属性的读写权限为“公共读”及防盗链规则Refer:http://www.dbfen.com,http://www.dbfen.com。 第三步:登录阿里云官网,找到“对象存储OSS”。开通 OSS 服务。在使用阿里云 OSS 服务之前,确保您已经注册了阿里云账号并完成实名认证。如果您还没有创建阿里云账号,系统会在您开通 OSS 时提示您注册账号。点击OSS产品详情页中的立即开通; 第四步:开通服务后,点击管理控制台直接进入 OSS 管理控制台界面。 您也可以点击位于首页右上方菜单栏的管理控制台,进入阿里云管理控制台首页,然后点击下图所示按钮进入 OSS 管理控制台界面。 第五步:进入控制台之后,别忘了我们的目的是要找到AcesskeyID等信息。所以,OSS 管理控制台界面。单击Bucket 管理>新建 Bucket,新建 Bucket对话框将弹出。 第六步:在BucketName框中,输入存储空间名称。存储空间的命名必须符合命名规范。所选定的存储空间名称在阿里云 OSS 的所有现有存储空间名称中必须具有唯一性。创建后不支持更改存储空间名称。有关存储空间命名的更多信息,请参阅OSS 基本概念介绍。 在在 所属地域 框中,下拉选择该存储空间的数据中心。订购后不支持更换地域。如需要通过 ECS 内网访问 OSS,可选择与你 ECS 相同的地域。有关地域的更多信息,请参阅阿里云OSS 开发人员指南中的对应章节。读写权限框中,下拉选择对应的权限。 公共读写:任何人(包括匿名访问)都可以对该存储空间中的文件进行读写操作,所有这些操作产生的费用由该存储空间的创建者承担,请慎用该权限; 公共读:只有该存储空间的创建者可以对该存储空间内的文件进行写操作,任何人(包括匿名访问)可以对该存储空间中的文件进行读操作; 私有:只有该存储空间的创建者可以对该存储空间内的文件进行读写操作,其他人无法访问该存储空间内的文件。 这里我们选择的是“公共读”,单击 “ 提交”。存储空间创建完成。 第七步:我们看到导航栏,右上角有我们需要的Access key管理按钮,点击进去。 第八步:将bucket,AcesskeyID等信息复制,填入多备份网站上提示的绑定阿里云的页面中。 就这样,我们就完成了阿里云网盘的绑定啦,很简单吧!另外,阿里云OSS是按量付费的,你占了多大的存储空间,就付多少钱。 第九步:阿里云绑定之后,大家可以回到多备份的控制面板,去创建属于自己的备份任务啦,但是记住在存储位置那里要选择“阿里云”哟! 相关资料: 关于本教程详细更多细节:http://jingyan.baidu.com/article/4dc40848943ea8c8d946f1af.html 阿里云对象存储OSS使用方法:http://www.chinaz.com/web/2015/0909/444441_2.shtml 多备份相关资料:http://lusongsong.com/reed/1143.html

优秀的个人博客,低调大师

[雪峰磁针石博客]计算机视觉opcencv工具深度学习快速实战2 opencv快速入门

opencv基本操作 # -*- coding: utf-8 -*- # Author: xurongzhong#126.com wechat:pythontesting qq:37391319 # 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入) # qq群:144081101 591302926 567351477 # CreateDate: 2018-11-17 import imutils import cv2 # 读取图片信息 image = cv2.imread("jp.png") (h, w, d) = image.shape print("width={}, height={}, depth={}".format(w, h, d)) # 显示图片 cv2.imshow("Image", image) cv2.waitKey(0) # 访问像素 (B, G, R) = image[100, 50] print("R={}, G={}, B={}".format(R, G, B)) # 选取图片区间 ROI (Region of Interest) roi = image[60:160, 320:420] cv2.imshow("ROI", roi) cv2.waitKey(0) # 缩放 resized = cv2.resize(image, (200, 200)) cv2.imshow("Fixed Resizing", resized) cv2.waitKey(0) # 按比例缩放 r = 300.0 / w dim = (300, int(h * r)) resized = cv2.resize(image, dim) cv2.imshow("Aspect Ratio Resize", resized) cv2.waitKey(0) # 使用imutils缩放 resized = imutils.resize(image, width=300) cv2.imshow("Imutils Resize", resized) cv2.waitKey(0) # 顺时针旋转45度 center = (w // 2, h // 2) M = cv2.getRotationMatrix2D(center, -45, 1.0) rotated = cv2.warpAffine(image, M, (w, h)) cv2.imshow("OpenCV Rotation", rotated) cv2.waitKey(0) # 使用imutils旋转 rotated = imutils.rotate(image, -45) cv2.imshow("Imutils Rotation", rotated) cv2.waitKey(0) # 使用imutils无损旋转 rotated = imutils.rotate_bound(image, 45) cv2.imshow("Imutils Bound Rotation", rotated) cv2.waitKey(0) # apply a Gaussian blur with a 11x11 kernel to the image to smooth it, # useful when reducing high frequency noise 高斯模糊 # https://www.pyimagesearch.com/2016/07/25/convolutions-with-opencv-and-python/ blurred = cv2.GaussianBlur(image, (11, 11), 0) cv2.imshow("Blurred", blurred) cv2.waitKey(0) # 画框 output = image.copy() cv2.rectangle(output, (320, 60), (420, 160), (0, 0, 255), 2) cv2.imshow("Rectangle", output) cv2.waitKey(0) # 画圆 output = image.copy() cv2.circle(output, (300, 150), 20, (255, 0, 0), -1) cv2.imshow("Circle", output) cv2.waitKey(0) # 划线 output = image.copy() cv2.line(output, (60, 20), (400, 200), (0, 0, 255), 5) cv2.imshow("Line", output) cv2.waitKey(0) # 输出文字 output = image.copy() cv2.putText(output, "https://china-testing.github.io", (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) cv2.imshow("Text", output) cv2.waitKey(0) 原图: 选取图片区间 ROI (Region of Interest) 缩放 按比例缩放 旋转 使用imutils无损旋转 高斯模糊 画框 画圆 划线 输出文字 执行时的输出 $ python opencv_tutorial_01.py width=600, height=322, depth=3 R=41, G=49, B=37 本节英文原版代码下载 关于旋转这块,实际上pillow做的更好。比如同样逆时针旋转90度。 opencv的实现: import imutils import cv2 image = cv2.imread("jp.png") rotated = imutils.rotate(image, 90) cv2.imshow("Imutils Rotation", rotated) cv2.waitKey(0) pillow的实现: from PIL import Image im = Image.open("jp.png") im2 = im.rotate(90, expand=True) im2.show() 更多参考: python库介绍-图像处理工具pillow中文文档-手册(2018 5.*) 参考资料 技术支持qq群144081101(代码和模型存放) 本文最新版本地址 本文涉及的python测试开发库 谢谢点赞! 本文相关海量书籍下载 2018最佳人工智能机器学习工具书及下载(持续更新) 代码下载:https://itbooks.pipipan.com/fs/18113597-320636142 代码github地址:https://github.com/china-testing/python-api-tesing/tree/master/opencv_crash_deep_learning 识别俄罗斯方块 # -*- coding: utf-8 -*- # Author: xurongzhong#126.com wechat:pythontesting qq:37391319 # 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入) # qq群:144081101 591302926 567351477 # CreateDate: 2018-11-19 # python opencv_tutorial_02.py --image tetris_blocks.png import argparse import imutils import cv2 ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="path to input image") args = vars(ap.parse_args()) image = cv2.imread(args["image"]) cv2.imshow("Image", image) cv2.waitKey(0) # 转为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imshow("Gray", gray) cv2.waitKey(0) # 边缘检测 edged = cv2.Canny(gray, 30, 150) cv2.imshow("Edged", edged) cv2.waitKey(0) # 门限 thresh = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)[1] cv2.imshow("Thresh", thresh) cv2.waitKey(0) # 发现边缘 cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = cnts[0] if imutils.is_cv2() else cnts[1] output = image.copy() # loop over the contours for c in cnts: # draw each contour on the output image with a 3px thick purple # outline, then display the output contours one at a time cv2.drawContours(output, [c], -1, (240, 0, 159), 3) cv2.imshow("Contours", output) cv2.waitKey(0) # draw the total number of contours found in purple text = "I found {} objects!".format(len(cnts)) cv2.putText(output, text, (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (240, 0, 159), 2) cv2.imshow("Contours", output) cv2.waitKey(0) # we apply erosions to reduce the size of foreground objects mask = thresh.copy() mask = cv2.erode(mask, None, iterations=5) cv2.imshow("Eroded", mask) cv2.waitKey(0) # 扩大 mask = thresh.copy() mask = cv2.dilate(mask, None, iterations=5) cv2.imshow("Dilated", mask) cv2.waitKey(0) # a typical operation we may want to apply is to take our mask and # apply a bitwise AND to our input image, keeping only the masked # regions mask = thresh.copy() output = cv2.bitwise_and(image, image, mask=mask) cv2.imshow("Output", output) cv2.waitKey(0) 原图和灰度图: 边缘检测 门限 轮廓 查找结果 腐蚀和扩张 屏蔽和位操作 串在一起执行 $ python opencv_tutorial_02.py --image tetris_blocks.png

优秀的个人博客,低调大师

jQuery 3.6.3 发布,快速选择器修复

jQuery 3.6.2刚于上周发布,该版本包含了几个变化,其中最重要的是解决了在大多数浏览器中引入的一些新选择器的问题,如 :has()。现如今,jQuery 3.6.3 也已发布;原因在于有一个问题被报告,揭示了原来的修复问题。新版本亮点更新内容如下: 正确使用CSS.supports 在jQuery 3.6.2修复了:has的问题后,开发团队开始使用CSS.supports( "selector(SELECTOR)") 来确定一个选择器如果直接传递给querySelectorAll是否有效。当CSS.supports返回false时,jQuery就会退回到它自己的选择器引擎(Sizzle)。但显然,该实现有一个错误。在CSS.supports( "selector(SELECTOR)")中,SELECTOR需要是一个<complex-selector>而不是一个<complex-selector-list>。比如说: CSS.supports("selector(div)"); // true CSS.supports("selector(div, span)"); // false 这意味着所有复杂的选择器列表都通过Sizzle而不是querySelectorAll来传递。这在大多数情况下不一定是个问题,但它确实意味着一些在浏览器中支持但在Sizzle中不支持的 level 4 选择器,如:valid,如果它是选择器列表的一部分(例如 "input:valid, div"),则不再起作用。需要注意的是,目前这只影响到Firefox;但随着他们推出对 CSS.support 的更改后,它将影响所有的浏览器。 这个问题现在已经在jQuery 3.6.3中被修复,它也是这个版本中唯一的功能变化。 下载 https://code.jquery.com/jquery-3.6.3.js https://code.jquery.com/jquery-3.6.3.min.js 从 npm 获取此版本: npm install jquery@3.6.3 更多详情可查看发布公告。

优秀的个人博客,低调大师

Jmix 1.3 发布 - 少代码快速开发平台

Jmix 框架和 Studio 1.3 版本发布,这次发布带来了不少新功能以及框架和 Studio 的 Bug 修复: 主要新功能: Java 兼容版本提升至 Java 11,不再支持 Java 8. FlowUI 预览,该版本提供了基于 Vaadin 23 的 FlowUI 预览版。 一键云部署预览,该版本提供了 AWS 一键部署预览版。 主要解决的 Bug 有: 解决了 Liquibase 脚本在 MySQL 运行出错的问题。 多租户场景时,租户信息未保存的问题。 集合属性的懒加载出错问题。 详细内容请参考中文官网发布的最新更新:https://docs.jmix.cn/jmix/whats-new/index.html Jmix 是一款全栈 Java/Kotlin 少代码企业级应用开发框架,适合以数据为中心的应用程序开发。框架发展已有超过 10 年的历史,全球使用的企业超过 1000 家,开发者已经超过 25000 人。通过 Jmix实现您的数字化愿景,无低代码平台限制,无供应商依赖,无需按用户付费。 请访问中国官网,地址:https://www.jmix.cn 中文论坛:https://forum.jmix.cn

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。