.netcore上的linux odbc连接到配置单元
我正在尝试从linux上的.netcore(1.0.1版)应用程序(Red Hat 7.3 64位)连接到Hive Program.cs代码:.netcore上的linux odbc连接到配置单元,linux,hive,odbc,.net-core,Linux,Hive,Odbc,.net Core,我正在尝试从linux上的.netcore(1.0.1版)应用程序(Red Hat 7.3 64位)连接到Hive Program.cs代码: using System; using System.Data.Odbc; using System.Collections; using System.Collections.Generic; namespace app { class Program { static void Main(string[] args)
using System;
using System.Data.Odbc;
using System.Collections;
using System.Collections.Generic;
namespace app
{
class Program
{
static void Main(string[] args)
{
var connectionString = "DSN=Hadoop Hive";
var createTableCommandText = "CREATE TABLE Searches(searchTerm STRING, userid BIGINT,userIp STRING) " +
"COMMENT 'Stores all searches for data' " +
"PARTITIONED BY(searchTime DATE) " +
"STORED AS SEQUENCEFILE;";
using (var connection = new OdbcConnection(connectionString))
{
using (var command = new OdbcCommand(createTableCommandText, connection))
{
try
{
connection.Open();
// Create a table.
command.ExecuteNonQuery();
// Insert row of data.
command.CommandText = "INSERT INTO TABLE Searches PARTITION (searchTime = '2015-02-08') " +
"VALUES ('search term', 1, '127.0.0.1')";
command.ExecuteNonQuery();
// Reading data from Hadoop.
command.CommandText = "SELECT * FROM Searches";
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
for (var i = 0; i < reader.FieldCount; i++)
{
Console.WriteLine(reader[i]);
}
}
}
}
catch (OdbcException ex)
{
Console.WriteLine(ex.Message);
throw;
}
finally
{
Drop table
command.CommandText = "DROP TABLE Searches";
command.ExecuteNonQuery();
}
}
}
有人能帮忙解决这个问题吗?驱动程序(用于配置单元的Hortonworks ODBC)在此服务器上运行。此处的ODBC连接库存在问题。您似乎正在尝试将其作为32位应用程序进行构建和加载,而Hortonworks ODBC for Hive可能不支持这一点。需要查看Hortonworks的文档以了解这一点。您似乎正在尝试不支持Linux托管环境的第三方ODBC ADO.NET连接器。官方的.NET Core compatible System.Data.Odbc计划用于netstandard2.0,并将很快提供()。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<PackageId>HadoopLibrary</PackageId>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Data.Common" Version="4.3.0" />
<PackageReference Include="System.Threading.Thread" Version="4.3.0" />
<PackageReference Include="System.Collections.NonGeneric" Version="4.0.1" />
<PackageReference Include="MSA.NetCore.ODBC" Version="1.0.3" />
</ItemGroup>
Unhandled Exception: System.DllNotFoundException: Unable to load DLL 'odbc32.dll': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)
at System.Data.Odbc.libodbc.SQLAllocHandle(OdbcHandleType HandleType, IntPtr InputHandle, IntPtr& OutputHandlePtr)
at System.Data.Odbc.OdbcConnection.Open()
at hwapp.Program.Main(String[] args)