Do tnet Apache Spark - ссылка на объект не установлена ​​на экземпляр объекта - PullRequest
2 голосов
/ 29 апреля 2020

Я пытался зарегистрироваться и запустить UDF с помощью tnet apache spark. Я использую Microsoft.Spark.0.10.0 на MacOs

Это то, что я пытался сделать

var options = new Dictionary<string, string>
            {
                {"delimiter", "|" }
            };

            var schema = "Username STRING, Machine STRING, Date STRING";

            var df = spark
                .Read()
                .Format("csv")
                .Options(options)
                .Schema(schema)
                .Load(staff);

            df.PrintSchema();
            df.Show();

            spark.Udf().Register<string, string>("MyUDF", randomFunc);

            df.CreateOrReplaceTempView("AllLogs");

            DataFrame dateDf = spark.Sql("SELECT *, MyUDF(alllogs.Username) FROM AllLogs");
            dateDf.Collect();


И случайное веселье c это

        private static string randomFunc(string val)
        {
            return "Random";
        }

Кажется, я получаю ту же ошибку. Я пробовал разные способы создания Udf-файлов, но ни один из них не работает.

Это ошибка:

[Error] [TaskRunner] [1] ProcessStream() failed with exception: System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Spark.Utils.UdfSerDe.Deserialize(UdfData udfData) in /_/src/csharp/Microsoft.Spark/Utils/UdfSerDe.cs:line 168
   at Microsoft.Spark.Utils.CommandSerDe.DeserializeUdfs[T](UdfWrapperData data, Int32& nodeIndex, Int32& udfIndex) in /_/src/csharp/Microsoft.Spark/Utils/CommandSerDe.cs:line 267
   at Microsoft.Spark.Utils.CommandSerDe.Deserialize[T](Stream stream, SerializedMode& serializerMode, SerializedMode& deserializerMode, String& runMode) in /_/src/csharp/Microsoft.Spark/Utils/CommandSerDe.cs:line 243
   at Microsoft.Spark.Worker.Processor.CommandProcessor.ReadSqlCommands(PythonEvalType evalType, Stream stream) in D:\a\1\s\src\csharp\Microsoft.Spark.Worker\Processor\CommandProcessor.cs:line 190
   at Microsoft.Spark.Worker.Processor.CommandProcessor.ReadSqlCommands(PythonEvalType evalType, Stream stream, Version version) in D:\a\1\s\src\csharp\Microsoft.Spark.Worker\Processor\CommandProcessor.cs:line 117
   at Microsoft.Spark.Worker.Processor.CommandProcessor.Process(Stream stream) in D:\a\1\s\src\csharp\Microsoft.Spark.Worker\Processor\CommandProcessor.cs:line 62
   at Microsoft.Spark.Worker.Processor.PayloadProcessor.Process(Stream stream) in D:\a\1\s\src\csharp\Microsoft.Spark.Worker\Processor\PayloadProcessor.cs:line 74
...