Linux データ分析ツールには次のものが含まれます: 1. 大量のデータの分散処理が可能なソフトウェア フレームワークである Hadoop; 2. 巨大なデータ ストリームを非常に確実に処理でき、Hadoop バッチの処理に使用される Storm . データ; 3. データ マイニングとビジュアル モデリングに使用される RapidMiner; 4. トイレなど。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
6 Linux ビッグデータ処理および分析ツール
1、Hadoop
Hadoop は、大量のデータを分散処理できるソフトウェア フレームワークです。しかし、Hadoop はそれを、信頼性が高く、効率的で、スケーラブルな方法で実行します。
Hadoop は、計算要素とストレージに障害が発生することを前提としており、作業データの複数のコピーを維持し、障害が発生したノードに対して処理を再分散できるようにするため、信頼性が高くなります。
Hadoop は並列的に動作するため効率的であり、並列処理によって処理が高速化されます。
Hadoop はスケーラブルでもあり、ペタバイト規模のデータを処理できます。さらに、Hadoop はコミュニティ サーバーに依存しているため、比較的低コストで誰でも使用できます。
Hadoop は、ユーザーが簡単に構築して使用できる分散コンピューティング プラットフォームです。ユーザーは、Hadoop 上で大量のデータを処理するアプリケーションを簡単に開発して実行できます。主に次の利点があります。
高い信頼性。データをビットごとに保存して処理する Hadoop の機能は信頼に値します。
高い拡張性。 Hadoop はデータを分散し、利用可能なコンピューター クラスター間でコンピューティング タスクを完了します。クラスターは数千のノードに簡単に拡張できます。 ############効率。 Hadoop はノード間でデータを動的に移動し、各ノードの動的バランスを確保できるため、処理速度が非常に高速です。
プロジェクトは主に 5 つの部分で構成されています:
ハイパフォーマンス コンピュータ システム (HPCS)。これには、次世代のコンピュータ システム、システム設計ツール、高度な評価に関する研究が含まれます。典型的なシステムとオリジナル システムなど;
3. Storm
Storm には、リアルタイム分析、オンライン機械学習、ノンストップ コンピューティング、分散 RPC (リモート プロセス コール プロトコル、ネットワークを介してリモート コンピューター プログラムからサービスを要求する方法)、ETL (抽出-変換) など、多くの応用分野があります。 -Loading)Data Extraction, Transformation and Loadingの略)など。 Storm の処理速度は驚くべきもので、テスト後、各ノードは 1 秒あたり 100 万のデータ タプルを処理できます。 Storm はスケーラブルで耐障害性があり、セットアップと操作が簡単です。
4. Apache ドリル
企業ユーザーが Hadoop データ クエリを高速化するより効果的な方法を見つけるのを支援するために、Apache Software Foundation 協会は最近、「Drill」と呼ばれるオープンソース プロジェクトを立ち上げました。 Apache Drill は Google の Dremel を実装しています。
Hadoop ベンダー MapR Technologies のプロダクト マネージャーである Tomer Shiran 氏によると、「Drill」は Apache インキュベーター プロジェクトとして運営されており、今後も世界中のソフトウェア エンジニアに普及していく予定です。
このプロジェクトは、Google の Dremel Hadoop ツール (Google が Hadoop データ分析ツールのインターネット アプリケーションを高速化するために使用している) のオープンソース バージョンを作成します。 「ドリル」は、Hadoop ユーザーが大量のデータ セットをより迅速にクエリするのに役立ちます。
「Drill」プロジェクトは、実際には Google の Dremel プロジェクトからインスピレーションを受けています: このプロジェクトは、Google が Web ドキュメントの分析とクロール、Android マーケットにインストールされているアプリケーション データの追跡など、大量のデータ セットの分析と処理を支援します。スパムの分析、 Google の分散ビルド システムでのテスト結果の分析など。
「Drill」Apache オープン ソース プロジェクトを開発することで、組織は Drill の API インターフェイスと柔軟で強力なアーキテクチャを確立して、幅広いデータ ソース、データ形式、クエリ言語をサポートできるようになります。
5、RapidMiner
RapidMiner は、非常に高度なテクノロジーを備えた世界をリードするデータ マイニング ソリューションです。さまざまなデータ アートを含む幅広いデータ マイニング タスクをカバーし、データ マイニング プロセスの設計と評価を簡素化できます。
機能と特徴
無料のデータ マイニング テクノロジとライブラリ
100% Java コード (オペレーションで実行可能)システム)
データ マイニング プロセスはシンプル、強力、直感的です
内部 XML により、データ マイニング プロセスの交換を表す標準化された形式が保証されます
シンプルなスクリプト言語を使用して大規模なプロセスを自動化できます
マルチレベルのデータ ビューで有効かつ透過的なデータを確保します
グラフィカル ユーザー インターフェイスの対話型プロトタイプ
コマンド ライン (バッチ モード) 自動大規模アプリケーション
Java API (アプリケーション プログラミング インターフェイス)
シンプルなプラグインとプロモーション メカニズム
強力な視覚化エンジン、高次元の多くの最先端のビジュアル モデリングデータ
400 を超えるデータ マイニング オペレーターをサポート
Yale は、テキスト マイニング、マルチメディア マイニング、機能設計、データフローマイニング、統合開発手法、分散データマイニング。
6. Pentaho BI
Pentaho BI プラットフォームは、従来の BI 製品とは異なり、プロセス中心です。フレームワーク。その目的は、一連のエンタープライズレベルの BI 製品、オープンソース ソフトウェア、API、およびその他のコンポーネントを統合して、ビジネス インテリジェンス アプリケーションの開発を促進することです。この登場により、Jfree、Quartz などの一連の独立したビジネス インテリジェンス製品を統合して、複雑で完全なビジネス インテリジェンス ソリューションを形成できるようになります。
Pentaho Open BI スイートのコア アーキテクチャおよび基盤である Pentaho BI プラットフォームは、中央コントローラーがワークフロー エンジンであるため、プロセス中心です。ワークフロー エンジンは、プロセス定義を使用して、BI プラットフォーム上で実行されるビジネス インテリジェンス プロセスを定義します。プロセスは簡単にカスタマイズでき、新しいプロセスを追加できます。 BI プラットフォームには、これらのプロセスのパフォーマンスを分析するためのコンポーネントとレポートが含まれています。現在、Pentaho の主な要素には、レポート生成、分析、データマイニング、ワークフロー管理などが含まれます。これらのコンポーネントは、J2EE、WebService、SOAP、HTTP、Java、JavaScript、ポータルなどのテクノロジーを通じて Pentaho プラットフォームに統合されます。 Pentaho のディストリビューションは主に Pentaho SDK の形式で行われます。
Pentaho SDK には、Pentaho プラットフォーム、Pentaho サンプル データベース、独立して実行される Pentaho プラットフォーム、Pentaho ソリューション サンプル、および事前設定された Pentaho ネットワーク サーバーの 5 つの部分が含まれています。その中で、Pentaho プラットフォームは、Pentaho プラットフォームのソース コード本体を含む、Pentaho プラットフォームの最も重要な部分であり、Pentaho データベースは、構成情報、ソリューション関連情報など、Pentaho プラットフォームの通常の動作のためのデータ サービスを提供します。 Pentaho プラットフォームの場合、これは必要なく、構成を通じて他のデータベース サービスに置き換えることができます。独立して実行できる Pentaho プラットフォームは、Pentaho プラットフォームの独立実行モードの例であり、 Pentaho プラットフォームはアプリケーション サーバーのサポートなしで独立して実行されます。Pentaho ソリューション サンプルは、Pentaho プラットフォームに関連するビジネス インテリジェンス ソリューションを開発する方法を示す Eclipse プロジェクトです。
Pentaho BI プラットフォームは、サーバー、エンジン、コンポーネントの基盤上に構築されています。これらは、システムの J2EE サーバー、セキュリティ、ポータル、ワークフロー、ルール エンジン、グラフ作成、コラボレーション、コンテンツ管理、データ統合、分析、モデリング機能を提供します。これらのコンポーネントのほとんどは標準ベースであり、他の製品に置き換えることができます。
9 Linux データ分析コマンド ライン ツール
1. head と tail
まず、ファイル処理から始めましょう。ファイルの内容は何ですか? その形式は何ですか? cat コマンドを使用してターミナルにファイルを表示できますが、明らかに長い内容を含むファイルの処理には適していません。
head と tail を入力すると、ファイル内の指定された行数を完全に表示できます。行数を指定しない場合は、デフォルトで 10 行が表示されます。
$ tail -n 3 jan2017articles.csv 02 Jan 2017,Article,Scott Nesbitt,3 tips for effectively using wikis for documentation,1,/article/17/1/tips-using-wiki-documentation,"Documentation, Wiki",710 02 Jan 2017,Article,Jen Wike Huger,The Opensource.com preview for January,0,/article/17/1/editorial-preview-january,,358 02 Jan 2017,Poll,Jason Baker,What is your open source New Year's resolution?,1,/poll/17/1/what-your-open-source-new-years-resolution,,186
最後の 3 行で、日付、著者名、タイトル、その他の情報を見つけることができました。ただし、列ヘッダーがないため、各列の具体的な意味がわかりません。以下の各列の具体的なタイトルを確認してください:
$ head -n 1 jan2017articles.csv Post date,Content type,Author,Title,Comment count,Path,Tags,Word count
これですべてが明確になり、発行日、コンテンツ タイプ、著者、タイトル、投稿数、関連 URL、各記事のタグ、および単語が表示されます。カウント。
2. wc
しかし、何百、あるいは何千もの記事を分析する必要がある場合、どう対処すればよいでしょうか? ここでは、wc コマンドを使用する必要があります。は「ワードカウントの略称。 wc は、ファイルのバイト、文字、単語、または行をカウントできます。この例では、記事の行数を知りたいと考えています。
$ wc -l jan2017articles.csv 93 jan2017articles.csv
このファイルは合計 93 行あります。最初の行にファイル タイトルが含まれていることを考慮すると、このファイルは 92 件の記事のリストであると推測できます。
3, grep
以下で新しい質問が生じます: セキュリティ トピックに関連する記事はいくつありますか? 目標を達成するには、必要な記事がすべて含まれていると想定します。タイトルに「安全性」という言葉がラベルなどに記載されています。現時点では、grep ツールを使用して、特定の文字でファイルを検索したり、他の検索パターンを実装したりできます。これは、正規表現を使用して非常に正確な一致パターンを作成することもできるため、非常に強力なツールです。ただし、ここでは単純な文字列を見つけるだけで済みます。
$ grep -i "security" jan2017articles.csv 30 Jan 2017,Article,Tiberius Hefflin,4 ways to improve your security online right now,3,/article/17/1/4-ways-improve-your-online-security,Security and encryption,1242 28 Jan 2017,Article,Subhashish Panigrahi,How communities in India support privacy and software freedom,0,/article/17/1/how-communities-india-support-privacy-software-freedom,Security and encryption,453 27 Jan 2017,Article,Alan Smithee,Data Privacy Day 2017: Solutions for everyday privacy,5,/article/17/1/every-day-privacy,"Big data, Security and encryption",1424 04 Jan 2017,Article,Daniel J Walsh,50 ways to avoid getting hacked in 2017,14,/article/17/1/yearbook-50-ways-avoid-getting-hacked,"Yearbook, 2016 Open Source Yearbook, Security and encryption, Containers, Docker, Linux",2143
使用する形式は、 grep に -i フラグ (大文字と小文字を区別しないことを grep に通知)、検索するパターン、そして最後に検索するターゲット ファイルの場所です。 。最終的にセキュリティ関連の記事が 4 件見つかりました。検索範囲がより具体的な場合は、パイプを使用できます。これにより、 grep と wc コマンドを組み合わせて、セキュリティ コンテンツに言及している行が何行あるかを確認できます。
$ grep -i "security" jan2017articles.csv | wc -l 4
このようにして、wc は grep コマンドの出力を抽出し、それを入力として使用します。この組み合わせと、少しのシェル スクリプトを組み合わせることで、ターミナルが即座に強力なデータ分析ツールに変わることは明らかです。
4, tr
ほとんどの分析シナリオでは、CSV ファイルに直面しますが、さまざまなアプリケーションを実現するために、CSV ファイルを他の形式に変換するにはどうすればよいでしょうか? ここでは、テーブルを介してデータを使用できるように、HTML 形式に変換します。 tr コマンドは、あるタイプの文字を別のタイプに変換できるので、この目標を達成するのに役立ちます。同様に、パイプ コマンドを使用して出力/入力のドッキングを実現することもできます。
次に、別のマルチパートの例を試してみましょう。これは、1 月 20 日に公開された記事のみを含む TSV (タブ区切り値) ファイルを作成することです。
$ grep "20 Jan 2017" jan2017articles.csv | tr ',' '/t' > jan20only.tsv
まず、日付クエリに grep を使用します。この結果を tr コマンドにパイプし、後者を使用してすべてのカンマをタブ (「/t」として表します) に置き換えます。しかし、結果はどこに行くのでしょうか? ここでは、> 文字を使用して、結果を画面ではなく新しいファイルに出力します。このようにして、dqywjan20only.tsv ファイルに予期したデータが含まれていることを確認できます。
$ cat jan20only.tsv 20 Jan 2017 Article Kushal Das 5 ways to expand your project's contributor base 2 /article/17/1/expand-project-contributor-base Getting started 690 20 Jan 2017 Article D Ruth Bavousett How to write web apps in R with Shiny 2 /article/17/1/writing-new-web-apps-shiny Web development 218 20 Jan 2017 Article Jason Baker "Top 5: Shell scripting the Cinnamon Linux desktop environment and more" 0 /article/17/1/top-5-january-20 Top 5 214 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007
5, sort
まず、最も多くの情報を含む特定の列を見つけたい場合はどうすればよいでしょうか?どの記事に最も長い新しい記事が含まれているかを知る必要があるとします。次に、以前に取得した 1 月 20 日の記事リストに直面して、sort コマンドを使用して列の単語数を並べ替えることができます。この場合、中間ファイルを使用する必要はなく、パイプを引き続き使用できます。ただし、長いコマンド チェーンを短い部分に分割すると、操作全体が簡素化されることがよくあります。
$ sort -nr -t$'/t' -k8 jan20only.tsv | head -n 1 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007
以上是一条长命令,我们尝试进行拆分。首先,我们使用sort命令对字数进行排序。-nr选项告知sort以数字排序,并将结果进行反向排序(由大到小)。此后的-t$'/t'则告知sort其中的分隔符为tab('/t')。其中的$要求此shell为一条需要处理的字符串,并将/n返回为tab。而-k8部分则告知sort命令使用第八列,即本示例中进行字数统计的目标列。
最后,输出结果被pipe至head,处理后在结果中显示此文件中包含最多字数的文章标题。
6、sed
大家可能还需要在文件中选择特定某行。这里可以使用sed。如果希望将全部包含标题的多个文件加以合并,并只为整体文件显示一组标题,即需要清除额外内容; 或者希望只提取特定行范围,同样可以使用sed。另外,sed还能够很好地完成批量查找与替换任务。
下面立足之前的文章列表创建一个不含标题的新文件,用于同其他文件合并(例如我们每月都会定期生成某个文件,现在需要将各个月份的内容进行合并)。
$ sed '1 d' jan2017articles.csv > jan17no_headers.csv
其中的“1 d”选项要求sed删除第一行。
7、cut
了解了如何删除行,那么我们该如何删除列?或者说如何只选定某一列?下面我们尝试为之前生成的列表创建一份新的作者清单。
$ cut -d',' -f3 jan17no_headers.csv > authors.txt
在这里,通过cut与-d相配合代表着我们需要第三列(-f3),并将结果发送至名为authors.txt的新文件。
8、uniq
作者清单已经完成,但我们要如何知悉其中包含多少位不同的作者?每位作者又各自编写了多少篇文章?这里使用unip。下面我们对文件进行sort排序,找到唯一值,而后计算每位作者的文章数量,并用结果替换原本内容。
sort authors.txt | uniq -c > authors.txt
现在已经可以看到每位作者的对应文章数,下面检查最后三行以确保结果正确。
$ tail -n3 authors-sorted.txt 1 Tracy Miranda 1 Veer Muchandi 3 VM (Vicky) Brasseur
9、awk
最后让我们了解最后一款工具,awk。awk是一款出色的替换性工具,当然其功能远不止如此。下面我们重新回归1月12日文章列表TSV文件,利用awk创建新列表以标明各篇文章的作者以及各作者编写的具体字数。
$ awk -F "/t" '{print $3 " " $NF}' jan20only.tsv Kushal Das 690 D Ruth Bavousett 218 Jason Baker 214 Tracy Miranda 1007
其中的-F "/t"用于告知awk目前处理的是由tab分隔的数据。在大括号内,我们为awk提供执行代码。$3代表要求其将输出第三行,而$NF则代表输出最后一行(即‘字段数’的缩写),并在两项结果间添加两个空格以进行明确划分。
虽然这里列举的例子规模较小,看似不必使用上述工具解决,但如果将范围扩大到包含93000行的文件,那么它显然很难利用电子表格程序进行处理。
利用这些简单的工具与小型脚本,大家可以避免使用数据库工具并轻松完成大量数据统计工作。无论您是专业人士还是业余爱好者,它的作用都不容忽视。
相关推荐:《Linux视频教程》
以上がLinux データ分析ツールとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。