我只是在试用dotnet spark。我修改了示例程序,将Dataframe内容写入Parquet文件。然而,我得到一个例外,似乎没有一个有用的信息。我可以知道是什么导致了异常吗?或者异常日志在什么地方更有用?
20/12/09 15:04:32信息sqlhadoopmapreducecommitprotocol:使用输出提交程序类org.apache.parquet.hadoop.parquetoutputcommitter 20/12/09 15:04:32信息执行程序:执行程序在阶段6.0(tid 604)中终止了任务1.0,原因:阶段取消
[2020-12-09t07:04:32.6029517z][his2547][exception][jvmbridge]jvm方法执行失败:在microsoft.spark.interop.ipc.jvmbridge.calljavamethod(boolean isstatic,object classnameorjvmobjectreference,string methodname)上使用1个参数([index=1,type=string,value=myparquet1],)调用类22时,非静态方法parquet失败,object[]args)20/12/09 15:04:32警告tasksetmanager:阶段6.0中丢失任务1.0(tid 604,localhost,executor driver):taskkilled(阶段取消)
20/12/09 15:04:32信息taskschedulerimpl:从池异常保存到parquetsystem中删除了任务集6.0,其任务已全部完成。异常:jvm方法执行失败:当使用1个参数([index=1,type=string,value=myparquet1]调用类22时,非静态方法parquet失败,)在microsoft.spark.interop.ipc.JVMVBridge.calljavamethod(布尔isstatic,object classnameorjvmobjectreference,string methodname,object[]args)在microsoft.spark.interop.ipc.JVMVBridge.calljavamethod(布尔isstatic,object classnameorjvmobjectreference,string methodname,对象arg0),位于microsoft.spark.interop.ipc.jvmbridge.callnonstaticjavamethod(jvmobjectreference objectid,string methodname,object arg0),位于microsoft.spark.interop.ipc.jvmobjectreference.invoke(string methodname,c:\users\administrator\mysparkapp\program.cs中mysparkapp.program.main(string[]args)的microsoft.spark.sql.dataframewriter.parquet(字符串路径)中的对象arg0):第46行
这是我的密码:
class Program
{
static void Main(string[] args)
{
//BuildWebHost(args).Run();
// Create a Spark session
SparkSession spark = SparkSession
.Builder()
.AppName("word_count_sample1")
.GetOrCreate();
// Create initial DataFrame
DataFrame dataFrame = spark.Read().Text(@"C:\Users\Administrator\mySparkApp\input.txt");
// Count words
DataFrame words = dataFrame
.Select(Functions.Split(Functions.Col("value"), " ").Alias("words"))
.Select(Functions.Explode(Functions.Col("words"))
.Alias("word"))
.GroupBy("word")
.Count()
.OrderBy(Functions.Col("count").Desc());
// Show results
words.Show();
try
{
//words.Write().Mode(SaveMode.Append).Parquet("parquet.wordcount");
var dataFrameWriter = words.Write();
dataFrameWriter.Mode(SaveMode.Overwrite); // Append does not work either
dataFrameWriter.Parquet("myparquet1");
}
catch (Exception ex)
{
Console.WriteLine("Exception saving to parquet" + ex.ToString());
}
spark.Stop();
}
基本上,代码只是创建我在parquet文件的path参数中指定的文件夹,但是内容是空的。如果我尝试读取先前由scala驱动程序使用dotnetspark创建的parquet文件,它读起来就很好。只有来自dotnetspark的写操作不起作用。任何帮助都将不胜感激。谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!