我有一个简单的Spark应用程序,旨在读取分隔的文本文件并将其保存为镶木地板格式。
要求是处理平面数据文件(没有标题),该文件将伴随模式定义。最终结果是一个可执行jar,它作为命令行参数传递给它们。
到目前为止我已经回顾过的示例要么从标题行推断出架构,要么在代码本身中定义架构。怎么可以实现呢?
import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class SparkCSVApplication {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("JavaWordCount").setMaster("local");
// create Spark Context
SparkContext context = new SparkContext(conf);
// create spark Session
SparkSession sparkSession = new SparkSession(context);
Dataset<Row> df = sparkSession
.read()
.format("com.databricks.spark.csv")
.option("header", true)
.option("inferSchema", true)
.load("/Users/Chris/Desktop/Meter_Geocode_Data_150215_114551.csv"); //TODO: CMD line arg
//("hdfs://localhost:9000/usr/local/hadoop_data/loan_100.csv");
System.out.println("========== Print Schema ============");
df.printSchema();
System.out.println("========== Print Data ==============");
df.show();
System.out.println("========== Generate parquet file ==============");
df.write().parquet("/Users/Chris/Desktop/meter_geocode.parquet");
}
}
答案 0 :(得分:0)
public class Fragmen1 extends Fragment {
Button HBoton;
Button GBoton;
Button SCTBoton ;
Button RGboton ;
Button CPBoton ;
Button ARBoton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_fragmen1, container, false);
HBoton = (Button) view.findViewById(R.id.HipotenusaBoton);
HBoton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent HBoton = new Intent(getActivity(), Hipotenusa.class);
startActivity(HBoton);
}
});
GBoton= (Button) view.findViewById(R.id.button3);
GBoton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent GBoton = new Intent(getActivity(), Grados_Radianes.class);
startActivity(GBoton);
}
});
SCTBoton = (Button) view.findViewById(R.id.SCTboton);
SCTBoton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick (View v ){
Intent SCTBoton = new Intent(getActivity(), SenoCosenoTangente.class);
startActivity(SCTBoton);
}
});
RGboton = (Button) view.findViewById(R.id.button6);
RGboton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent RGboton = new Intent(getActivity(),RadianesGrados.class);
startActivity(RGboton);
}
});
CPBoton = (Button) view.findViewById(R.id.CAPbutton);
CPBoton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent CPBoton = new Intent( getActivity(),CordenadasRectagularesPolares.class);
startActivity(CPBoton);
}
});
ARBoton = (Button) view.findViewById(R.id.arboton);
ARBoton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent ARBoton = new Intent( getActivity(),AnguloReferencia.class);
startActivity(ARBoton);
}
});
return view;
}
}
没有从标题行中找出数据类型。它从数据本身中找出数据类型,这里是文档中的文本 -
inferSchema - 从数据自动推断输入架构。它 需要对数据进行一次额外的传递。如果设置为None,则使用 默认值,false。
编辑:
要将某些其他文件中定义的架构与现有数据帧相关联,可以通过多种方式以编程方式执行此操作。
假设您有inferSchema
中的数据以及名为main.csv
的第二个文件中的所有标题,其中只包含以逗号分隔的列名列表。请关注 -
header.csv
免责声明:这是用pyspark编写的,我确信它在java中也很简单。