Ich versuche, einen MapReduce-Auftrag an den HDInsight-Cluster zu senden. In meinem Job habe ich keine Reduzierung geschrieben, weil ich nichts reduzieren möchte. Alles, was ich tun möchte, ist, jeden Dateinamen zu analysieren und die Werte an jede Zeile in der Datei anzuhängen. Damit ich alle benötigten Daten in der Datei habe.C# MapReduce-Auftrag einreichen Windows Azure HDInsight - Der Antwortstatuscode zeigt keinen Erfolg an: 500 (Serverfehler)
Mein Code ist
using Microsoft.Hadoop.MapReduce;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GetMetaDataFromFileName
{
class Program
{
static void Main(string[] args)
{
var hadoop = connectAzure();
//Temp Workaround to Env Variables
Environment.SetEnvironmentVariable("HADOOP_HOME", @"c:\hadoop");
Environment.SetEnvironmentVariable("Java_HOME", @"c:\hadoop\jvm");
var result = hadoop.MapReduceJob.ExecuteJob<MetaDataGetterJob>();
}
static IHadoop connectAzure()
{
//TODO: Update credentials and other information
return Hadoop.Connect(
new Uri("https://sampleclustername.azurehdinsight.net//"),
"admin",
"Hadoop",
"password",
"blobstoragename.blob.core.windows.net", //Storage Account that Log files exists
"AccessKeySample", //Storage Account Access Key
"logs", //Container Name
true
);
}
//Hadoop Mapper
public class MetaDataGetter : MapperBase
{
public override void Map(string inputLine, MapperContext context)
{
try
{
//Get the meta data from name of the file
string[] _fileMetaData = context.InputFilename.Split('_');
string _PublicIP = _fileMetaData[0].Trim();
string _PhysicalAdapterMAC = _fileMetaData[1].Trim();
string _BootID = _fileMetaData[2].Trim();
string _ServerUploadTime = _fileMetaData[3].Trim();
string _LogType = _fileMetaData[4].Trim();
string _MachineUpTime = _fileMetaData[5].Trim();
//Generate CSV portion
string _RowHeader = string.Format("{0},{1},{2},{3},{4},{5},", _PublicIP, _PhysicalAdapterMAC, _BootID, _ServerUploadTime, _LogType, _MachineUpTime);
//TODO: Append _RowHeader to every row in the file.
context.EmitLine(_RowHeader + inputLine);
}
catch(ArgumentException ex)
{
return;
}
}
}
//Hadoop Job Definition
public class MetaDataGetterJob : HadoopJob<MetaDataGetter>
{
public override HadoopJobConfiguration Configure(ExecutorContext context)
{
//Initiate the job config
HadoopJobConfiguration config = new HadoopJobConfiguration();
config.InputPath = "asv://[email protected]/Input";
config.OutputFolder = "asv://[email protected]/Output";
config.DeleteOutputFolder = true;
return config;
}
}
}
}
der Regel, was tun Sie, was der Grund von 500 (Server Error)? Erhalte ich falsche Zugangsdaten? Eigentlich habe ich den Unterschied zwischen Benutzername und HadoopUser Parameter in Hadoop.Connect Methode nicht wirklich verstanden?
Danke,
irgendwelche Verbesserungen an diesem? – Rengasamy