spark.sparkContext.setLogLevel("WARN")
时间: 2023-07-19 16:54:30 浏览: 125
这是一个设置日志级别的语句,用于控制Spark应用程序输出的日志信息的详细程度。Spark日志级别有多个,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。默认情况下,Spark日志级别为INFO,输出的日志信息比较详细。但如果我们只关心程序的错误和警告信息,可以将日志级别设置为WARN,这样输出的日志信息会减少,仅包含错误和警告信息。这样做可以减少日志信息的量,提高程序的运行效率。
相关问题
spark = SparkSession.builder.appName("test_udf").enableHiveSupport().getOrCreate() sc = spark.sparkContext sc.setLogLevel("WARN") log4jLogger = sc._jvm.org.apache.log4j LOGGER = log4jLogger.LogManager.getLogger(__name__) LOGGER.warn("logger before run...") # register udf spark.udf.register("test_udf", nested_f, 'int') # use udf in sql spark.sql("select test_udf(10)").show() LOGGER.warn("logger after run...") spark.stop()这段代码什么意思
这段代码是使用 PySpark 中的 SparkSession 创建一个名为 "test_udf" 的应用程序,启用对 Hive 的支持,然后设置日志级别为 WARN。接下来,使用 PySpark 中的 udf 函数注册一个名为 "test_udf" 的 UDF(用户自定义函数),该函数接受一个名为 nested_f 的函数作为参数,并将其返回类型定义为整数。然后在 SQL 中使用注册的 UDF(test_udf)来调用 nested_f 函数,并将参数设置为 10。最后,输出 "logger after run..." 日志信息并停止 SparkSession。
分析代码package analyse import org.apache.spark.sql.SparkSession object BasicAnaylse { val spark=SparkSession.builder() .appName("BasicAnalyse") .master("local[*]") .enableHiveSupport() .getOrCreate() spark.sparkContext.setLogLevel("WARN") def main(args: Array[String]): Unit = { val tableName = Array("media_index","mediamatch_userevent","mediamatch_usermsg","mmconsume_billevents","order_index") var i = ""; for ( i<-tableName){ Analyse(i) } } def Analyse(tableName:String):Unit={ val data = spark.table(tableName = "user_project."+tableName) println(tableName+"表数据:"+data.count()) println(tableName+"表字段为空数:"+(data.count()-data.select("phone_no").na.drop().count)) } }
根据你提供的代码,我们可以看出该代码的功能是对指定的5个表进行数据分析,输出表数据的总量和字段为空的数量。具体分析如下:
1. 导入了SparkSession类,用于连接Spark集群。
2. 创建了一个BasicAnalyse对象,并定义了SparkSession对象spark,用于连接Spark集群和设置日志级别为WARN。
3. 在main函数中,定义了一个包含5个表名的数组tableName,并使用for循环遍历该数组,依次调用Analyse函数进行分析。
4. Analyse函数中,首先通过SparkSession对象spark的table方法获取指定表名的数据。
5. 然后使用count方法计算数据总量,并使用na.drop().count方法计算字段为空的数量。
6. 最后输出表数据的总量和字段为空的数量。
需要注意的是,该代码使用了Spark SQL来操作数据,因此需要确保Spark集群已经启动并且可以访问到指定的表。同时,该代码中使用了变量i来遍历表名数组tableName,可以使用更加直观的方式来定义变量名。例如,可以使用tableName.foreach(tableName => Analyse(tableName))来遍历表名数组并调用Analyse函数进行分析。
阅读全文