Tôi đang làm việc trên một giải pháp mà tôi sẽ có một cụm Hadoop với Hive đang chạy và tôi muốn gửi các công việc và truy vấn hive từ một ứng dụng .NET được xử lý và được thông báo khi chúng đã được hoàn thành. Tôi không thể tìm thấy bất kỳ giải pháp nào để giao tiếp với Hadoop ngoài trực tiếp từ một ứng dụng Java, có API nào mà tôi có thể truy cập mà tôi không tìm thấy không?Làm cách nào để kết nối với Hadoop/Hive từ .NET
Trả lời
Rõ ràng chúng ta có thể kết nối với Hadoop với các giải pháp phi Java - xem Do I have to write my application in Java?
Thrift API cũng là một cách cho ngôn ngữ khác để truy cập HDFS và hive
Với Hadoop: không có cách nào thẳng để kết nối từ C# bởi vì tầng giao tiếp Hadoop chỉ làm việc với java và không phải là nền tảng chéo. Nó có lẽ là có thể nhưng theo những cách rất không tầm thường. Tôi biết có một bản vá để thêm hỗ trợ Protocol Buffers cho Hadoop nhưng tại thời điểm viết (Aug 2011) vẫn chưa được phát hành.
Với tình hình Hive tốt hơn vì Hive có giao diện tiết kiệm hỗ trợ C#. Bạn có thể tải xuống các giao diện Hive Thrift và tự tạo C# client nhưng hãy cẩn thận rằng nó yêu cầu một số mã được tạo ra. Thay vào đó, tôi khuyên bạn nên tải xuống dll từ https://bitbucket.org/vadim/hive-sharp/downloads/hive-sharp-lib.dll hoặc sử dụng trình quản lý gói Nuget, tìm kiếm "hive": http://nuget.org/List/Packages/Hive.Sharp.Lib Tuyên bố từ chối trách nhiệm: Tôi là tác giả.
Có trình điều khiển ODON Hortonworks. Tôi không sử dụng nó cá nhân, nhưng nó sẽ cho phép bạn làm việc với hive như với bất kỳ nguồn dữ liệu ODBC nào khác. Bạn có thể sử dụng lớp OdbcConnection để kết nối với Hive khi trình điều khiển ODBC được cài đặt.
Như đã lưu ý trong các câu trả lời khác - bạn có thể sử dụng api Tiết kiệm. Để làm điều đó, bạn cần tạo các lớp C# từ các tệp định nghĩa giao diện, mà bạn có thể tải xuống từ kho lưu trữ nguồn Hive. Cách tiếp cận này làm việc cho tôi.
Bạn có thể sử dụng IKVM, để chuyển đổi thư viện java của máy khách hadoop thành các hội đồng .Net mà bạn có thể sử dụng từ C#. Tôi không sử dụng IKVM với khách hàng Hive, nhưng tôi đã IKVMed một số thư viện máy khách hadoop khác và đáng ngạc nhiên nó đã làm việc.
EDIT:
- Ngoài ra còn có Apache templeton, cho phép trình công việc Hive (Pig và MR cũng) sử dụng giao diện Nghỉ ngơi. Vấn đề với nó là nó tạo ra một nhiệm vụ bản đồ khác để gửi công việc Hive, làm cho nó chậm hơn.
Xem điều này có hữu ích không. Tôi đã cố gắng để kết nối với Hadoop qua C#
Có thể truy cập vào Hive sử dụng C# bằng cách sử dụng kết nối ODBC của Microsoft. Tải xuống gói Nuget cho "Microsoft.Hadoop.Hive" và làm theo ví dụ được cung cấp tại http://msdn.microsoft.com/en-us/library/dn749834.aspx
Bí quyết nằm trong việc tạo chuỗi kết nối để kết nối với nó. Cách tốt nhất tôi đã đưa ra là để tải xuống trình điều khiển Microsoft Hive ODBC (http://www.microsoft.com/en-us/download/details.aspx?id=40886), cài đặt nó, sau đó sử dụng máy chủ Explorer bên trong Visual Studio để thêm một kết nối mới, sau đó xây dựng chuỗi kết nối cho tôi.Để làm điều này, tôi đã sử dụng các bước sau:
- Thay đổi nguồn dữ liệu để "Microsoft ODBC Data Source" và đảm bảo bạn đang sử dụng "Nhà cung cấp dữ liệu .NET Framework cho ODBC" là nhà cung cấp dữ liệu.
- Dưới sự "Dữ liệu đặc tả nguồn" phần, đánh dấu vào nút "Sử dụng chuỗi kết nối", sau đó bấm vào nút "Build".
- Dưới mục "Máy Data Source" tab, chọn "Mẫu Microsoft Hive DSN" tên nguồn dữ liệu, sau đó nhấp vào nút "OK".
- Một cửa sổ có tiêu đề "Microsoft Hive ODBC driver kết nối Dialog" sẽ mở ra. Nhập mô tả tùy chọn, sau đó nhập đường dẫn đến máy chủ Hive của bạn, cổng bạn sẽ sử dụng và cơ sở dữ liệu nào cần kết nối. Cho biết Loại Máy chủ Hive và chỉ định cơ chế xác thực để sử dụng, sau đó điền vào các trường thích hợp.
- Cuối cùng, nhấn vào nút "Test" ở phía dưới để đảm bảo rằng bạn có thể kết nối thành công. Nếu thành công, hãy nhấp vào nút "OK", sau đó bạn sẽ trở lại trong cửa sổ "Sửa đổi kết nối". Nhập thông tin đăng nhập cho dịch vụ Hive của bạn tại đây.
Hoặc sử dụng nguồn dữ liệu này hoặc sao chép chuỗi kết nối được tạo cho bạn và sử dụng nó trong ứng dụng của bạn.
Điều này có thể được sử dụng để ghi dữ liệu vào hdfs thay vì tổ ong không? –
Sử dụng Hbase.Net thư viện từ https://hbasenet.codeplex.com/
Sau đó, bạn có thể kết nối với HBase/hive như hình dưới đây:
Client c = new Client("10.20.14.179", 9090, 1000000);
var cli = c.TotalClients;
var tableList = c.GetTableNames();
FYI, chúng tôi đang sử dụng hortonworks sandbox và nó kết nối tốt.
Trong ví dụ trên, 10.20.14.179 là máy chủ lưu trữ và 9090 là cổng.
Ngoài ra, dưới đây có thể giúp từ https://community.hortonworks.com/questions/25101/is-there-a-way-to-connect-to-hbase-using-c.html
Không có nguồn gốc C# HBase khách hàng. tuy nhiên, có một số tùy chọn để tương tác với HBase từ C#.
C# HBase Thrift khách hàng - tiết kiệm cho phép xác định các điểm cuối dịch vụ và các mô hình dữ liệu trong một định dạng phổ biến và sử dụng máy phát điện mã để tạo bindings ngôn ngữ cụ thể. HBase cung cấp máy chủ Thirft và các định nghĩa . Có rất nhiều ví dụ trực tuyến để tạo C# HBase Khách hàng Tiết kiệm.
Marlin - Marlin là khách hàng C# để tương tác với Stargate (HBase REST API) mà cuối cùng đã trở thành hbase-sdk-cho-net. Tôi đã không đích thân kiểm tra này chống lại HBase 1.x +, nhưng xem xét nó sử dụng Stargate, tôi hy vọng nó sẽ làm việc. Nếu bạn định sử dụng Làm nổi bật và triển khai ứng dụng khách của riêng mình, mà tôi khuyên bạn nên sử dụng trên Tiết kiệm, hãy đảm bảo sử dụng protobuf để tránh việc serialization JSON trên không. Sử dụng phương pháp tiếp cận dựa trên HTTP cũng giúp việc yêu cầu số dư tải trên nhiều cổng trở nên dễ dàng hơn nhiều đối với các yêu cầu cân bằng tải .
Máy chủ truy vấn Phoenix - Phoenix là một skin SQL trên HBase. Truy vấn Phoenix Máy chủ là một API REST để gửi truy vấn SQL đến Phoenix. Đây là một số mã ví dụ, tuy nhiên, tôi chưa thử nghiệm nó.
Trình điều khiển ODBA HBBA ODBC - Sử dụng ODBC để kết nối với HBase. Tôi đã nghe thấy phản hồi tích cực về phương pháp này, đặc biệt là từ các công cụ như Hoạt cảnh. Đây không phải là nguồn mở và yêu cầu mua giấy phép.
- 1. Làm cách nào để kết nối Dart với SQLite?
- 2. Làm cách nào để kết nối với mysql bằng java?
- 3. nodejs kết nối kết nối net
- 4. Làm cách nào để kết nối AudioUnilePlayer AudioUnit với 3DMixer?
- 5. .net 3.5: Để đọc chuỗi kết nối từ app.config?
- 6. Làm cách nào để kết nối C# với Postgres?
- 7. Kết nối với AS400 bằng cách sử dụng .NET
- 8. Làm thế nào để kết nối JMS từ PHP?
- 9. Làm cách nào để kết nối với Weblogic từ xa bằng JConsole?
- 10. Làm cách nào để kết nối với cơ sở dữ liệu MySQL từ Clojure?
- 11. Làm cách nào để kết nối với máy chủ MySQL từ xa bằng C#?
- 12. Làm cách nào để kết nối với MySQL từ các cửa sổ?
- 13. Làm cách nào để thiết lập chứng chỉ kiểm tra cho kết nối SSL trong .NET?
- 14. Sử dụng Tiết kiệm để kết nối với Cassandra từ .NET
- 15. Làm thế nào để kết nối boto với fakes3
- 16. Làm thế nào để kết nối với MongoDB trong Windows?
- 17. Lấy chuỗi kết nối trong .net 4
- 18. Làm thế nào để kết nối Sqlcmd với máy chủ?
- 19. Làm cách nào để có cấu trúc kết nối C API gốc từ Trình kết nối MySQL/C++?
- 20. Kết nối với Oracle từ F #
- 21. Lỗi 102 (net :: ERR_CONNECTION_REFUSED): Máy chủ từ chối kết nối
- 22. SQL, Làm cách nào để ghép nối các kết quả?
- 23. Làm thế nào để kết nối couchDB với angular.js?
- 24. Tôi làm cách nào để có thể kết nối các kết nối bằng psycopg và gevent?
- 25. Kết nối với SockJS từ Java?
- 26. Làm cách nào để kiểm tra kết nối svn?
- 27. Chuỗi kết nối để kết nối với .MDF
- 28. Làm cách nào để kết nối lại với thiết bị sau khi ngắt kết nối trong Lõi Bluetooth
- 29. Làm cách nào để tăng vòng kết nối cùng với việc tăng văn bản trong vòng kết nối?
- 30. Làm thế nào để kết nối IBOutlet từ UITableViewController trực tiếp với ô tùy chỉnh?
Ah, tôi biết về phát trực tuyến (nhưng hoạt động từ dòng lệnh) - nhưng tôi không biết về Ống Hadoop tương thích SWIG nên tôi có thể tạo C# api trên đầu nó. –