無數的制圖要求,也針對重要的垂直領域,例如金融,科學和統計領域。
MindFusion.Diagramming for WinForms
MindFusion.Diagramming for WinForms是一個能幫助你創建工作流和進程圖表的.NET控件;數據庫實體關系圖表;組織圖表;對象層次和關系圖表;圖表和樹。它是基于對象-圖表框,表格和箭頭類型,將其歸類分派給其他并結合成復雜的結構。該控件提供超過預先定義的50多種圖表框,如自定義設計樣式和對圖表框著色等。
HTML5開發平臺
FusionCharts XT
FusionCharts XT作為FusionCharts圖表套包的主打產品,是50萬用戶首選的跨平臺、跨瀏覽器的JavaScript/HTML圖表解決方案,它提供了所有通用的圖表類型,同時它還支持 ASP、 ASP.NET、 PHP、 JSP、 ColdFusion、 Ruby on Rails、 JavaScript、甚至簡單的HTML頁面。它是你值得信賴的JavaScript圖表解決方案,目前在全球有50萬用戶選擇Fusioncharts來制作專業的JavaScript圖表。
AnyChart
AnyChart是基于JavaScript (HTML5) 的圖表控件。使用AnyChart控件,可創建跨瀏覽器和跨平臺的交互式圖表和儀表。AnyChart 圖表目前已被很多知名大公司所使用,可用于儀表盤、報表、數據分析、統計學、金融等領域。
AnyChar HTML5圖表高度可定制且高度兼容。擁有純JavaScript API,AnyChart圖表內置客戶端數據實時更新,多層次向下鉆區和具體參數更新。強大的主題引擎使你通過一系列圖表進行獨特的演示體驗,而PDF和圖像輸出能產出圖書質量打印文檔。
Highcharts
Highcharts是一款純JavaScript編寫的圖表庫,為你的Web網站、Web應用程序提供直觀、交互式圖表。當前支持折線、曲線、區域、區域曲線圖、柱形圖、條形圖、餅圖、散點圖、角度測量圖、區域排列圖、區域曲線排列圖、柱形排列圖、極坐標圖等幾十種圖表類型。
QT開發平臺
QtitanChart
QtitanChart是一個C ++庫,它代表一組控件,這些控件使您可以快速輕松地為應用程序提供漂亮而豐富的圖表。QtitanChart在Qt.C ++上實現,并且支持所有主要的桌面操作系統 - Windows、Linux和Mac OSX。要將QtitanChart添加到您的程序中,只需要幾行代碼,便捷的體系結構允許您自定義文本的每個部分。
Highcharts
Highcharts是一款純JavaScript編寫的圖表庫,為你的Web網站、Web應用程序提供直觀、交互式圖表。當前支持折線、曲線、區域、區域曲線圖、柱形圖、條形圖、餅圖、散點圖、角度測量圖、區域排列圖、區域曲線排列圖、柱形排列圖、極坐標圖等幾十種圖表類型。
QT開發平臺
QtitanChart
QtitanChart是一個C ++庫,它代表一組控件,這些控件使您可以快速輕松地為應用程序提供漂亮而豐富的圖表。QtitanChart在Qt.C ++上實現,并且支持所有主要的桌面操作系統 - Windows、Linux和Mac OSX。要將QtitanChart添加到您的程序中,只需要幾行代碼,便捷的體系結構允許您自定義文本的每個部分。
本次實戰的數據來自于"YouTube視頻統計與社交網絡"的數據集,是西蒙弗雷澤大學計算機學院在2008年所爬取的數據
數據集地址
數據之間采用"\t"作為分隔符
具體數據如下:
數據量大小為1G,條數為500萬+
使用環境為
hive-1.1.0-cdh5.4.5
hadoop-2.6.0-cdh5.4.5
演示形式為使用hive shell
我們一起來看看數據
主要的問題在于category和relatedIDs處理,由于Hive是支持array格式的,所以我們想到的是使用array來存儲category和relatedIDs,但是我們發現category的分割符是"&"而realatedIDs的分隔符是"\t",我們在創建表格的時候能夠指定array的分隔符,但是只能指定一個,所以再將數據導入到Hive表格之前我們需要對數據進行一定轉換和清洗
并且數據中肯定會存在一些不完整數據和一些奇怪的格式,所以數據的清洗是必要的,我在這里所使用的數據清洗方式是使用Spark進行清洗,也可以使用自定義UDF函數來進行清洗
數據清洗注意點
1)我們可以看到每行數據以"\t"作為分隔符,每行有十列數據,最后一列關聯ID可以為空,那么我們對數據進行split之后數組的大小要大于8
2)數據中存在 "uNiKXDA8eyQ KRQE 1035 News & Politics 107" 這樣格式的數據,所以在處理category時需要注意 News & Politics中間的 &
處理后的數據如下:
下面的實戰都是基于數據清洗后的數據進行的
1)youtube1的創建,文件格式為textfile
create table youtube1(買粉絲Id string, uploader string, age int, category array<string>, length int, views int, rate float, ratings int, 買粉絲ments int,relatedId array<string>)
row format delimited
fields terminated by "\t"
買粉絲llection items terminated by "&"
stored as textfile;
2)youtube2的創建,文件格式為orc
create table youtube2(買粉絲Id string, uploader string, age int, category array<string>, length int, views int, rate float, ratings int, 買粉絲ments int,relatedId array<string>)
row format delimited
fields terminated by "\t"
買粉絲llection items terminated by "&"
stored as orc;
3)youtube3的創建,文件格式為orc,進行桶分區
create table youtube3(買粉絲Id string, uploader string, age int, category array<string>, length int, views int, rate float, ratings int, 買粉絲ments int,relatedId array<string>)
clustered by (uploader) into 8 buckets
row format delimited
fields terminated by "\t"
買粉絲llection items terminated by "&"
stored as orc;
數據導入:
1)load data inpath "path" into table youtube1;
2)由于無法將textfile格式的數據導入到orc格式的表格,所以數據需要從youtube1導入到youtube2和youtube3:
insert into table youtube2 select * from youtube1;
insert into table youtube3 select * from youtube1;
1)user_tmp的創建,文件格式textfile,24buckets
create table user_tmp(uploader string,買粉絲s int,friends int)
clustered by (uploader) into 24 buckets
row format delimited
fields terminated by "\t"
stored as textfile;
2)user的創建,文件格式orc,24buckets
create table user(uploader string,買粉絲s int,friends int)
clustered by (uploader) into 24 buckets
row format delimited
fields terminated by "\t"
stored as orc;
user表的數據導入也是同理
數據導入:
1)load data inpath "path" into table user_tmp;
2)由于無法將textfile格式的數據導入到orc格式的表格,所以數據需要從user_tmp導入到user:
insert into table user select * from user_tmp;
1)統計出觀看數最多的10個視頻
2)統計出視頻類別熱度的前10個類型
3)統計出視頻觀看數最高的50個視頻的所屬類別
4)統計出觀看數最多的前N個視頻所關聯的視頻的所屬類別排行
5)篩選出每個類別中熱度最高的前10個視頻
6)篩選出每個類別中評分最高的前10個視頻
7)找出用戶中上傳視頻最多的10個用戶的所有視頻
8)篩選出每個類