Unix_C 计算传入文件的大小

C语言计算文件大小


请转  ----->    c 到 unix c 高级编程中计算文件大小的三种方法


//指定文件名计算其大小
#include <stdio.h>

//自定义函数计算参数传入文件的大小
int size( char * pc )
{
	//1.打开文件,使用fopen函数
	FILE * fp = fopen( pc, "rb" );
	if( NULL == fp )
	{
		return -1;
	}
	//2.调整文件读写位置到末尾,用fseek函数
	fseek(fp, 0, SEEK_END);
	//3、获取文件大小并返回,用ftell函数

	int res = ftell( fp );

	//4、关闭文件	
	fclose(fp);
	fp = NULL;

	return res;
}

int main( int argc, char * argv[])
{
	if( argc != 2)
	{
		printf("程序参数个数有误!\n");
	}

	int res = size( argv[1] );

	if( res != -1 )
	{
		printf("改文件的大小是:%d \n", res);
	}
	else
	{
		printf("文件打开失败!\n");
	}

	return 0;
}

<think>好的,用户想了解如何通过Kubernetes Client提交Spark on K8s Operator任务。我需要先理清步骤,并确保信息准确。首先,用户可能已经部署了Spark Operator,所以需要先确认这一点,但根据引用[1],部署Operator是前提。接下来,用户需要使用Kubernetes Client,这通常涉及创建自定义资源(CRD),也就是SparkApplication的YAML配置。 然后,用户需要知道如何通过Kubernetes Client库(比如Java或Python的客户端)来提交这个YAML配置。可能需要具体代码示例,比如用Python的话,会用到client库,加载配置文件,然后调用API创建资源。同时,需要提到认证配置,比如kubeconfig文件的位置,确保客户端能正确连接到集群。 另外,用户可能对任务监控和日志查看有疑问,需要说明如何用kubectl命令或者Kubernetes API来获取这些信息。还要注意引用相关的资料,比如引用[1]和[2]提到了Spark Operator的部署和稳定性,引用[3]和[4]涉及Kubernetes的操作符和helm安装,可能与任务提交的环境配置有关。需要确保回答结构清晰,分步骤说明,并提供示例代码和命令,帮助用户逐步操作。</think>### 通过 Kubernetes Client 提交 Spark on K8s Operator 任务的步骤 #### 1. 环境准备 - **部署 Spark Operator** 确保 Kubernetes 集群已通过 Helm 部署 Spark Operator[^1][^4],例如使用以下命令: ```bash helm repo add spark-operator https://googlecloudplatform.github.io/spark-on-k8s-operator helm install spark-operator spark-operator/spark-operator --namespace spark-operator ``` #### 2. 定义 SparkApplication 资源 创建 YAML 文件(如 `spark-job.yaml`),定义任务参数: ```yaml apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-wordcount namespace: default spec: type: Scala mode: cluster image: "gcr.io/spark-operator/spark:v3.1.1" mainClass: org.apache.spark.examples.streaming.NetworkWordCount mainApplicationFile: "local:///opt/spark/examples/jars/spark-examples_2.12-3.1.1.jar" arguments: ["localhost", "9999"] sparkConf: "spark.eventLog.enabled": "true" driver: cores: 0.1 memory: "512m" serviceAccount: spark-serviceaccount executor: cores: 1 instances: 2 memory: "512m" ``` #### 3. 使用 Kubernetes Client 提交任务 以 **Python 客户端库**为例: ```python from kubernetes import client, config # 加载 Kubernetes 配置(默认从 ~/.kube/config 读取) config.load_kube_config() # 创建 CustomObjectsApi 实例 api = client.CustomObjectsApi() # 读取 YAML 文件 with open("spark-job.yaml") as f: spark_job = yaml.safe_load(f) # 提交 SparkApplication 资源 api.create_namespaced_custom_object( group="sparkoperator.k8s.io", version="v1beta2", namespace="default", plural="sparkapplications", body=spark_job ) ``` #### 4. 验证任务状态 通过以下命令查看任务状态: ```bash kubectl get sparkapplications -n default kubectl logs spark-wordcount-driver -n default ``` #### 5. 关键配置说明 - **镜像选择**:需使用支持 Spark Operator 的镜像(如 `gcr.io/spark-operator/spark`)[^2] - **服务账号权限**:确保配置的 `serviceAccount` 有足够权限操作 Pod/ConfigMap - **资源限制**:合理设置 `driver` 和 `executor` 的 CPU/内存,避免节点资源争抢[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值