2013-05-05 17 views
13

Tôi muốn tạo một kho văn bản 100 triệu tweet bằng gói tm tính toán phân tán của R (được gọi là tm.plugin.dc). Các tweets được lưu trữ trong một bảng MySQL lớn trên máy tính xách tay của tôi. Máy tính xách tay của tôi cũ, vì vậy tôi đang sử dụng cụm Hadoop mà tôi đã thiết lập trên Amazon EC2.Làm thế nào để tạo ra tổng số 100 triệu tweet của Rtm?

tm.plugin.dc documentation from CRAN nói rằng chỉ DirSource hiện được hỗ trợ. Tài liệu này dường như gợi ý rằng DirSource chỉ cho phép một tài liệu cho mỗi tệp. Tôi cần các kho để xử lý mỗi tweet như một tài liệu. Tôi có 100 triệu tweet - điều này có nghĩa là tôi cần tạo 100 triệu tệp trên máy tính xách tay cũ của mình không? Điều đó có vẻ quá mức. Có cách nào tốt hơn?

Những gì tôi đã cố gắng cho đến nay:

  1. Làm một bãi chứa tập tin của bảng MySQL như một đĩa đơn (lớn) tập tin sql. Tải tệp lên S3. Chuyển tệp từ S3 sang cụm. Nhập tệp vào Hive bằng công cụ Sqoop của Cloudera. Giờ thì sao? Tôi không thể tìm ra cách để DirSource làm việc với Hive.

  2. Làm cho mỗi tweet một tệp XML trên máy tính xách tay của tôi. Nhưng bằng cách nào? Máy tính của tôi cũ và không thể làm tốt điều này. ... Nếu tôi có thể vượt qua điều đó, thì tôi sẽ: Tải lên tất cả 100 triệu tệp XML vào một thư mục trong S3 của Amazon. Sao chép thư mục S3 vào cụm Hadoop. Point DirSource vào thư mục.

+0

Các tweet được lưu trữ trong cơ sở dữ liệu của bạn như thế nào? Là XML? và tệp lớn như thế nào? Tôi giả sử bạn quan tâm đến nội dung của mỗi tweet và xây dựng kho dữ liệu ra khỏi nó. Bạn có thể đọc kho văn bản từ một tệp duy nhất, bạn không cần tạo hàng triệu tệp. –

+0

@ VC VComas: Tôi không chắc chắn những gì bạn có nghĩa là 'làm thế nào là tweets được lưu trữ' - Tôi đã có cột varchar khác nhau trong bảng của tôi, nếu đó là những gì bạn có ý nghĩa.Ví dụ, một cột được gọi là textOfTweet và một cột khác được gọi là statusID. MySQL cho phép tôi xuất nội dung dưới dạng tệp XML, nhưng các mẩu tin không được lưu trữ dưới dạng tệp XML. Tôi có thể xuất ở nhiều định dạng khác nhau: csv, tab, sql, XML. Yup, tôi quan tâm đến nội dung của mỗi tweet. Mỗi tweet cũng có dữ liệu meta duy nhất liên kết với nó mà tôi muốn giữ lại. – user554481

+0

@ VC VComas: Có cách nào để tạo nhiều tài liệu từ một tệp đơn lẻ theo cách được phân phối không? Ví dụ trên Amazon EC2? Bảng của tôi là hơn 10 GB (nó phát triển mỗi ngày). – user554481

Trả lời

2

Tôi thực sự khuyên bạn nên kiểm tra url này http://www.quora.com/How-can-R-and-Hadoop-be-used-together. Điều này sẽ cung cấp cho bạn thông tin chi tiết cần thiết cho vấn đề của bạn.

+0

Sử dụng RHive sẽ là tùy chọn có thể xảy ra https://github.com/nexr/ RHive –

4

sẽ không dễ dàng và hợp lý hơn để tạo tệp HDFS lớn với 100 triệu tweet và sau đó xử lý chúng theo gói R 'tm tiêu chuẩn?

Cách tiếp cận này dường như tự nhiên hơn vì HDFS được phát triển cho các tệp lớn và môi trường phân tán trong khi R là công cụ phân tích tuyệt vời nhưng không có song song (hoặc giới hạn). Cách tiếp cận của bạn trông giống như sử dụng các công cụ cho thứ gì đó mà chúng không được phát triển cho ...

2

Gói TM về cơ bản hoạt động trên mô hình tài liệu và thuật ngữ. Nó tạo một ma trận tài liệu thuật ngữ hoặc ma trận thuật ngữ tài liệu. Ma trận này chứa các tính năng như thuật ngữ (từ) và tần số của nó trong tài liệu. Vì bạn muốn thực hiện phân tích trên dữ liệu twitter, bạn nên có mỗi tweet làm tài liệu và sau đó bạn có thể tạo TDM hoặc DTM. Và có thể thực hiện phân tích khác nhau như tìm kiếm các hiệp hội, tìm tần số hoặc phân cụm hoặc tính toán số đo TDF-IDF, v.v.

Bạn cần xây dựng một kho dữ liệu thư mục. Vì vậy, bạn cần phải có thư mục cơ sở chứa các tài liệu cá nhân mà là tweet của bạn.

Tùy thuộc vào hệ điều hành bạn đang sử dụng, tôi sẽ làm gì nếu cửa sổ sẽ tạo tệp .bat hoặc mã javascript hoặc java đơn giản để đọc các hàng MySQL cho tệp tweet và FTP trên thư mục cục bộ của bạn hệ thống của Hadoop Box.

Khi các tệp đã được FTP, chúng tôi có thể sao chép thư mục sang HDFS bằng cách sử dụng Hadoop Copy From Local Command.

Các vấn đề liên quan