我在使用tispark时,我的spark应用手动执行完全没有问题。但是如果在crontab下调用,会出现查询tidb表无数据的情况。

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
5.2

【概述】 场景 + 问题概述
spark2.4.下我在使用tispark时,我的spark应用手动执行查询tidb表可以查到数据。但是如果在crontab下调用,会出现查询tidb表无数据的情况。

【应用框架及开发适配业务逻辑】
setIfMissing(“spark.app.name”, getClass.getName).
setIfMissing(“spark.driver.allowMultipleContexts”, “true”).
setIfMissing(“spark.sql.extensions”, “org.apache.spark.sql.TiExtensions”).
setIfMissing(“spark.tispark.pd.addresses”, “10.6.201.99:2379,10.6.201.100:2379,10.6.201.101:2379”).
//setIfMissing(“spark.tispark.pd.addresses”, “9”).
setIfMissing(“spark.driver.maxResultSize”, “12g”).
setIfMissing(“spark.debug.maxToStringFields”, “150”).
setIfMissing(“spark.tispark.tidb.addr”, “tidb1.prd.db”).
setIfMissing(“spark.tispark.tidb.port”, “3390”).
//如果要同时操作hive和tidb,加上enableHiveSupport方法。
// 如果有重名库 要操作Tidb表要加上前缀已区分是hive还是tidb的表
setIfMissing(“spark.tispark.write.allow_spark_sql”, “true”).
setIfMissing(“spark.tispark.db_prefix”, “tidb_”).
setIfMissing(“spark.sql.crossJoin.enabled”, “true”).
setIfMissing(“spark.sql.auto.repartition”, “true”).
setIfMissing(“spark.default.parallelism”, “1000”).
setIfMissing(“spark.sql.shuffle.partitions”, “500”).
setIfMissing(“spark.sql.autoBroadcastJoinThreshold”, “104857600”)
val spark = SparkSession.builder.config(sparkConf).enableHiveSupport().getOrCreate()

【背景】 做过哪些操作

【现象】 业务和数据库现象
select container_no,build_container_no,date_format(unload_time,‘yyyy-MM-dd HH:mm:ss’) unload_time
|from tidb_ytrpt.no_built_package_details
|where rpt_date=’${rpt_date}’
|and hold_time>5

【问题】 当前遇到的问题

【业务影响】

【TiDB 版本】

【附件】 相关日志及监控(https://metricstool.pingcap.com/)


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

2 个赞

crontab下面调用spark,环境变量是不全的,怎么调用的能给个例子么?

1 个赞

貌似是crontab的问题吧,写全路径试试呢

1 个赞

#!/bin/bash

source /etc/profile
source /opt/security/profiles/realtime_authenticate.sh

startDate=date +"%Y%m%d" -d "0 days"

echo ${startDate}

time
spark2-submit --master yarn
–class com.yto56.overtimeStock.OvertimeStock2Tispark
–conf spark.serializer=org.apache.spark.serializer.KryoSerializer
–conf spark.kryoserializer.buffer.max.mb=512
–conf spark.sql.autoBroadcastJoinThreshold=209715200
–conf spark.hadoop.mapreduce.input.fileinputformat.split.maxsize=268435456
–conf spark.hadoop.mapreduce.input.fileinputformat.split.minsize=268435456
–conf spark.sql.adaptive.enabled=true
–conf spark.sql.adaptive.shuffle.targetPostShuffleInputSize=134217728
–conf spark.dynamicAllocation.enabled=true
–conf spark.dynamicAllocation.maxExecutors=60
–conf spark.shuffle.consolidateFiles=true
–conf spark.reducer.maxSizeInFlight=96m
–conf spark.shuffle.file.buffer=128k
–executor-memory 16g
–driver-memory 16g
/root/fengchao/overtime_1/upcar-monitor-cdh-1.0-SNAPSHOT.jar 20220330

1 个赞

测了么?还是不行么?tidb无数据具体的报错是啥?

1 个赞

是环境变量问题。感谢回复

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。